Binary 不是一个数字的赞美或赞美吗?

Binary 不是一个数字的赞美或赞美吗?,binary,logic,boolean-logic,Binary,Logic,Boolean Logic,假设:2的恭维,整数。 只是一个简单的问题。为什么如果a有一个数字,取其非,它将等于负+或-1。例如: 553481923 ~553481923 = -553481924 2147455726 ~2147455726 = -2147455727 -2147455725 ~-2147455725 =2147455724 我知道这些位是颠倒的。发生这种情况有什么原因,或者这只是巧合。这是因为2的补码表示法的工作方式 2的补码整数的范围是(-2^31)到(2^31-1) 以2的补码8位值为例: 00

假设:2的恭维,整数。 只是一个简单的问题。为什么如果a有一个数字,取其非,它将等于负+或-1。例如:

553481923
~553481923 = -553481924
2147455726
~2147455726 = -2147455727
-2147455725
~-2147455725 =2147455724

我知道这些位是颠倒的。发生这种情况有什么原因,或者这只是巧合。

这是因为2的补码表示法的工作方式

2的补码整数的范围是
(-2^31)到(2^31-1)

以2的补码8位值为例:

0000 0000 = 0 (base 10)
1111 1111 = -1 (base 10)
和2的补码负8位值:

0000 0000 = 0 (base 10)
1111 1111 = -1 (base 10)

这是因为在2的补码系统中可以表示一个额外的负值,因为
00000000
为零。这意味着,在所有可以表示的正数中(最多为0111111),仍将短接该额外位。另一方面,您得到的
10000000
为负数。(我一直在使用字节,但这适用于任何长度的字。)