按位运算如何工作?

How do the bitwise operations work?

我遇到过奇怪的运算符,例如 &|^ 等。这些运算符究竟是如何工作的?

>>> 10 | 7
15
>>> 10 ^ 7
13
>>> 10 & 7
2
>>> 

这种模式看起来确实很奇怪,而且大多数来源都没有给出易于理解的答案。

BITWISE AND

1 中的每个项目 乘以 2 中的相应值:

a = 5     # In binary: 0101
b = 3     # In binary: 0011
c = a & b # In binary: 0001

print c   # In decimal: 1

BITWISE OR

如果任一行的任意项为1,对应的结果为1:

a = 5     # In binary: 0101
b = 3     # In binary: 0011
c = a | b # In binary: 0111

print c   # In decimal: 7

BITWISE XOR

如果每列中的项目彼此不同,则结果为1:

a = 5     # In binary: 0101
b = 3     # In binary: 0011
c = a ^ b # In binary: 0110

print c   # In decimal: 6

这可能对您有所帮助

Bitwise operators guide in MDN

您也可以使用 chrome javascript 控制台来测试所有这些运算符。

在javascript中尝试这样

var a = 5;
var b = 6;



console.log((a & b)); //AND

console.log((a | b)); //OR

console.log((a ^ b)); //XOR

console.log((~a)); //NOT

console.log((a << b)); //Left Shift

console.log((a >> b)); //Sign propagating right shift

console.log((a >>> b)); //Zero fill right shift