1. javascript按位运算符
Bit operators work on 32 bits numbers.
2. JavaScript按位运算符~
值得注意的是,在JavaScript中,~5
的值是-6
,而不是10
。
The examples above uses 4 bits unsigned examples. But JavaScript uses 32-bit signed numbers.
Because of this, in JavaScript, ~ 5 will not return 10. It will return -6.
~00000000000000000000000000000101 will return 11111111111111111111111111111010
那么问题来了,为什么11111111111111111111111111111010
等于-6
?不妨先了解一下负数的二进制表示。
负数的绝对值的二进制表示为原码,对原码取反得到补码,负数的二进制表示就是该补码加1。
所以,-6
的原码是00000000000000000000000000000110
,补码是11111111111111111111111111111001
,补码加1就是11111111111111111111111111111010
。
那么由11111111111111111111111111111010
到-6
就是逆操作而已。