因为我是reading about ~
,
在每个位上执行NOT运算符。
所以我试过了:
0 = 00000000000000000000000000000000
so ~0 should be
~0 = 11111111111111111111111111111111
但是当我尝试时,它会返回-1
。小数不是11111111111111111111111111111111
是4294967295
吗?
答案 0 :(得分:9)
它被解释为有符号整数,并且在二进制补码中,所有位为1的整数为-1
。
答案 1 :(得分:7)
仅当类型未签名时。有符号整数使用最高位作为否定标志 - 因此将其设置为1会产生负数。请参阅Two's Complement。
答案 2 :(得分:6)
对于无符号整数,所有1
s的位模式为4294967295
,或者具有大于 32位的有符号整数。对于带有 32位的有符号整数,表示为 2的补码其-1
。