当我补1(~1)时,得到的输出是-2。内部是怎么做到的?
我首先假设这些位是反转的,所以0001变成1110,然后1被添加到其中,所以它变成1111,这是存储的,然后如何检索这个数字?

最佳答案

好吧,不。当你补1的时候,你只需要把这些位颠倒一下:

 1  ==  0b00000001
~1  ==  0b11111110

这是-2的补码,这是计算机内部表示负数的方式。参见http://en.wikipedia.org/wiki/Two's_complement但以下是一些示例:
-1  ==  0b11111111
-2  ==  0b11111110
 ....
-128==  0b10000000
+127==  0b01111111
 ....
+2  ==  0b00000010
+1  ==  0b00000001
 0  ==  0b00000000

09-06 15:48