我的离散数学告诉我,对二进制数的每一位取负相当于将其与 1 进行异或。即:
~1010 === 0101
1010 XOR 111 = 0101
但这在 javascript 中不成立:
~123 === -124
123 ^ 1 === 122
为什么?
最佳答案
1 不是二进制 111
对数字的每一位取反相当于将每一位与 1 进行异或,即使用大小相等且所有位均为 1 的数字。
对于单个字节,您需要与二进制 11111111 进行异或,它等于十进制 255,而不是 1。十进制 1 是二进制 00000001,因此在按位异或中,您只翻转最后一位。
关于javascript - 按位求反和按位异或 1 不等价?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41784609/