为什么〜0是-1?

时间:2012-06-10 18:46:52

标签: javascript math binary

因为我是reading about ~

  

在每个位上执行NOT运算符。

所以我试过了:

 0 = 00000000000000000000000000000000

         so ~0 should be

~0 = 11111111111111111111111111111111

但是当我尝试时,它会返回-1。小数不是111111111111111111111111111111114294967295吗?

3 个答案:

答案 0 :(得分:9)

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

答案 1 :(得分:7)

仅当类型未签名时。有符号整数使用最高位作为否定标志 - 因此将其设置为1会产生负数。请参阅Two's Complement

答案 2 :(得分:6)

对于无符号整数,所有1 s的位模式为4294967295,或者具有大于 32位的有符号整数。对于带有 32位的有符号整数,表示为 2的补码-1