假设:2的赞美,整数。 只是一个简单的问题。为什么如果a有一个数字,并取其中的NOT,它将等于负+或 - 1.例如:
553481923
~553481923 = -553481924
2147455726
~2147455726 = -2147455727
-2147455725
~-2147455725 =2147455724
我知道这些位是反转的。是否有任何理由发生这种情况,或者这只是巧合。
答案 0 :(得分:0)
这是因为2的补码表示方式有效。
2的补码整数范围是(-2^31) to (2^31 - 1)
以2的补码8位值为例:
0000 0000 = 0 (base 10)
和2的补码负8位值:
1111 1111 = -1 (base 10)
答案 1 :(得分:0)
这是因为你可以在2的补码系统中表达一个额外的负值,因为00000000
为零。这意味着在你可以表达的所有正数中(最多01111111
),你仍然会被缩短一个额外的位。另一方面,您将10000000
作为负数。 (我一直在使用字节,但这适用于任何长度的单词。)