读书人

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

发布时间: 2013-01-23 10:44:49 作者: rapoo

业余自学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

读书人网 >C语言

热点推荐