| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 507 人关注过本帖
标题:简单程序,求大侠们帮下我这个菜鸟
只看楼主 加入收藏
greennet111
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2012-4-14
结帖率:100%
收藏
 问题点数:0 回复次数:3 
简单程序,求大侠们帮下我这个菜鸟
#include<stdio.h>

main()
{
    unsigned a=100;

    printf("%d\n",~a);
}

为什么定义了a为无符号的  按位求反是-101啊  书上结果是155  帮我分析哈错误啊
搜索更多相关主题的帖子: 100 101 
2012-04-17 11:37
davidlv419
Rank: 2
等 级:论坛游民
帖 子:24
专家分:69
注 册:2009-4-30
收藏
得分:0 
回复 楼主 greennet111
你的程序设计的有问题。请参照下面的程序。
程序代码:
#include <stdio.h>

int main(int argc, char** argv){
        unsigned char a=100;  //把a声明为8位无符号整形变量
        a = ~a;               //把a取反,并赋值给a
        printf("%d\n", a);
        return 0;
}


[ 本帖最后由 davidlv419 于 2012-4-17 12:50 编辑 ]
2012-04-17 12:48
巴克
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:93
专家分:199
注 册:2012-2-8
收藏
得分:0 
复制粘贴的:
C语言按位取反运算符~

注意:C语言的按位取反运算,对于符号位同样取反:如

C语言~12 按位取反的结果 是什么?

short 型为例 12的二进制为0000 1100

取反便成了。1111 0011

而这个数用带符号的整形(%d打印出)表示为-13

------------------------

负数的绝对值等于: 取反 + 1

1111 0011 取反加1为0000 1101 = 13

所以为-13

最高位为符号位

-----------------------------------

printf("%x,%d\n",~7,~7);//输出:fffffff8,-8

源码编译环境、32位机

 //.NETCLR规定整型变量默认为int类型,也就是说此处的7在内存中占有4个字节。

 00000000 00000000 00000000 00000111(7)

按位取反运算
 11111111 11111111 11111111 11111000
 printf("%x\n",~7)//十六进制输出:fffffff8
 printf("%d\n",~7)//十进制输出 :-8

之所以出现-8在于结果溢出,比如

 printf("%u\n",~7)//十进制输出 :4294967288

因此,输出结果为-8在于超过了int的范围

例如:下面两正数相加结果变成了负数.
  1)(+72)+(+98)=?
  0 1 0 0 1 0 0 0 B +72
 + 0 1 1 0 0 0 1 0 B +98
  1 0 1 0 1 0 1 0 B -86

补码的真值
例:-65

原码:11000001

反码:10111110

补码::10111111
若直接将10111111转换成十进制,发现结果并不是-65,而是191。

那么,如何得到其真值呢?

直接按照补码的反过程就行了:

如果要得到一个负二进制数的真值,只要先减1,然后各位取反(不包括符号位)就行了。

二进制值:10111111(-65的补码)
减1        :10111110

各位取反:11000001
此变为结果

 

~-2   结果是1  
2012-04-17 13:00
简体字01
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:86
专家分:137
注 册:2012-3-4
收藏
得分:0 
呵呵、学习了啊。
2012-04-18 12:27
快速回复:简单程序,求大侠们帮下我这个菜鸟
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027270 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved