javascript - 按位求反和按位异或 1 不等价?

标签 javascript bit-manipulation bitwise-operators xor negate

我的离散数学告诉我,对二进制数的每一位取负相当于将其与 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/

相关文章:

javascript - 如何防止退格键向后导航?

c - 使用位操作解码文件

javascript - HTML2canvas 生成模糊图像

c - 重写没有分支的代码

c++ - 使用 bitset 代替手写位操作代码?

javascript - 使用按位运算符时 "both bits"是什么意思

c - '(unsigned)1' 和 '(unsigned)~0' 之间的区别

c - 如何仅使用按位运算符来防止 C 中的位溢出

javascript - 字母解码Javascript

JavaScript () 以下 }