按位运算符将其操作数当做32位的比特序列(由0和1组成),而不是十进制、十六进制或八进制数值。
我们主要了解的有七种,分别是:&
、|
、^
、~
、<<
、>>
、>>>
。
按位与运算符
按位与 &
运算符,对两个 32 位表达式的每一位执行按位与运算。如果a 和 b 都为1 则结果为1,否则结果为0。
a | b | a & b |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
示例:
下面演示如何使用&
运算符:
console.log(1 & 3); // 1
1 & 3
的结果为1,1的二进制表示为00000001,3的二进制表示为00000011,根据 &
的规则,相同得1,不同得0,可以得出结果为 00000001,即1。
按位或运算符
按位或 |
运算符,只要a 和 b有一个为1,则结果为1,否则结果为0。
a | b | a | b |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
示例:
|
运算符和 &
运算符的区别在于,只要有一个操作数为1,结果就为1。同样是1 | 3
,结果输出为3。
console.log(1 | 3); // 3
1的二进制表示为00000001,3的二进制表示为00000011,根据 |
的规则,得到00000011,转为十进制,结果为3。