@tenlee
2016-03-03T14:10:29.000000Z
字数 1022
阅读 1718
未分类
正数的补码:和原码一样
负数
即一个负数的补码是 其相反数做取反运算在加1的结果。(这是公式,就这样规定的)
型的一个数,即int a = -2
,其补码,即在计算机中的存储形式计算方法如下:
-2
的相反数是2
,,2
的32位二进制(因为int是32位的)为
0 000 0000 0000 0000 0000 0000 0000 0010
取反,即 ~ 2运算,结果为:
(注意:取反运算也会把最高位取反):
1 111 1111 1111 1111 1111 1111 1111 1101
在加 1,结果为:
1 111 1111 1111 1111 1111 1111 1111 1110
所以在计算机中, -2
是以1 111 1111 1111 1111 1111 1111 1111 1110
这样的形式存储的,即1 111 1111 1111 1111 1111 1111 1111 1110
是-2
的补码。
好,现在根据公式会求负数的补码了。
那么,给一个补码,怎么求其代表的10进制的负数呢?
那就把上面的三步倒着来一遍不就得到了这个负数的相反数了,那么这个负数不就显而易见了,是吧。好,还是不懂,那我们举个例子吧!
假设一个型32位的二进制是
1 111 1111 1111 1111 1111 1111 1111 1101
明显,其最高位是,所以这是一个负数。
反执行上面的第三步,为
1 111 1111 1111 1111 1111 1111 1111 1100
0 000 0000 0000 0000 0000 0000 0000 0011
二进制0 000 0000 0000 0000 0000 0000 0000 0011
表示的十进制是,所以这个负数是啦
当然,还有其他求补码和补码变十进制的方法,选择喜欢的理解吧。
现在我们有这个公式,如果让求,那是不是很容易啊,明显
所以请记住这个公式吧。