按位求反和按位异或 1 不等价?
bitwise negate and bitwise XOR 1 not equivalent?
我的离散数学告诉我,对二进制数的每一位求反等同于将它与 1 异或。即:
~1010 === 0101
1010 XOR 111 = 0101
但这在javascript中不成立:
~123 === -124
123 ^ 1 === 122
为什么?
1 不是二进制 111
对一个数的每一位取反等同于 每一位 与 1 异或,即所有位都为 1 的大小相等的数。
对于单个字节,您希望与等于十进制 255 而不是 1 的二进制 11111111 进行异或运算。十进制 1 是二进制 00000001,因此在按位异或中,您只翻转最后一位。
我的离散数学告诉我,对二进制数的每一位求反等同于将它与 1 异或。即:
~1010 === 0101
1010 XOR 111 = 0101
但这在javascript中不成立:
~123 === -124
123 ^ 1 === 122
为什么?
1 不是二进制 111
对一个数的每一位取反等同于 每一位 与 1 异或,即所有位都为 1 的大小相等的数。
对于单个字节,您希望与等于十进制 255 而不是 1 的二进制 11111111 进行异或运算。十进制 1 是二进制 00000001,因此在按位异或中,您只翻转最后一位。