一、概述
按位操作符(Bitwise operators) 将其操作数(operands)当作32位的比特序列(由0和1组成),而不是十进制、十六进制或八进制数值。例如,十进制数9,用二进制表示则为1001。按位操作符操作数字的二进制形式,但是返回值依然是标准的JavaScript数值。
下面的表格总结了JavaScript中的按位操作符:
二、& (按位与)
只有两个操作数相应的比特位都是1时,结果才为1,否则为0。 都是1才是1
例1:1&3
先将1和3转为2进制数为,0001 和 0011,然后位运算如下
0 0 0 1 (1)
& 0 0 1 1 (3)
-----------------
0 0 0 1 (1)
结果为 1。
例2:23&5
1 0 1 1 1 (23)
& 0 0 1 0 1 (5)
-----------------
0 0 1 0 1 (5)
结果为 5。
二、| (按位或)
当两个操作数相应的比特位至少有一个1时,结果为1,否则为0。 有1就是1
例1:1 | 3
将1和3转为2进制数为,0001 和 0011,然后位运算如下
0 0 0 1 (1)
| 0 0 1 1 (3)
-----------------
0 0 1 1 (3)
结果为 3。
例2:23 | 5
1 0 1 1 1 (23)
| 0 0 1 0 1 (5)
-----------------
1 0 1 1 1 (23)
结果为 23。
三、巩固练习
console.log(16 & 9); //0
console.log(16 | 9); //25
console.log('string' & 1); //0
console.log('string' | 1); //1
console.log(true & 1); //1
console.log(false & 1); //0
console.log(true | 1); //1
console.log(false | 1); //1
console.log(true & 12); //0
console.log(false & 12); //0
console.log(true | 12); //13
console.log(false | 12); //12
console.log(undefined | false); //0
console.log(undefined | true); //1