首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

业余自学C语言的初学者,请问1个小疑点

2013-01-23 
业余自学C语言的菜鸟,请教1个小问题十进制数9进行~位运算9的二进制为1001进行~运算后变为0110即-6但电脑算

业余自学C语言的菜鸟,请教1个小问题

十进制数9进行~位运算
9的二进制为1001  进行~运算后
变为0110
即-6
但电脑算的是-10
求问为什么?


[解决办法]
计算机中都是以补码形式存储
以32位int为例:
9的二进制形式是(同时也是补码,正数的补码为其本身)
0000 0000 0000 0000 0000 0000 0000 1001
取反之后是
1111 1111 1111 1111 1111 1111 1111 0110
这是~9的原码
要转换成补码才是计算机存储的形式
即符号位不变,其余位取反加1
1000 0000 0000 0000 0000 0000 0000 1010
[解决办法]
计算机中,数值使用补码表示。
[解决办法]
1001
~1001=0110->补码1010即-10

热点排行