按位求反和按位异或 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,因此在按位异或中,您只翻转最后一位。