5

所以当我读到的时候~

对每个位执行 NOT 运算符。

所以我尝试了:

 0 = 00000000000000000000000000000000

         so ~0 should be

~0 = 11111111111111111111111111111111

但是当我尝试时,它返回-1. 不是11111111111111111111111111111111十进制4294967295吗?

4

3 回答 3

9

它被解释为有符号整数,并且在二进制补码中,所有位为 1 的整数是-1.

于 2012-06-10T18:48:19.617 回答
7

仅当类型为无符号时。有符号整数使用最高位作为否定标志 - 因此将其设置为 1 会导致负数。请参阅二的补码

于 2012-06-10T18:48:22.247 回答
6

1所有s的位模式4294967295用于无符号整数或超过32 位的有符号整数。对于以二进制补码表示的32 位有符号整数,其.-1

于 2012-06-10T18:48:14.483 回答