定义
位运算就是对二进制数执行计算,是整数的逐位运算。
例如:1+1=2,在十进制计算中是正确的,但是在二进制计算中,1+1=10;对于二进制数 100 取反,等于 001,而不是 -100。
分类
位运算符有 7 个,分为两类:
- 逻辑位运算符:
位与(&)、位或(|)、位异或(^)、非位(~) - 移位运算符:
左移(<<)、右移(>>)、无符号右移(>>>)
&运算符
&”运算符(位与)用于对两个二进制操作数逐位进行比较,并根据下表所示的换算表返回结果。
&运算符 | ||
|---|---|---|
| 1 | 1 | 1 |
| 1 | 0 | 0 |
| 0 | 1 | 0 |
| 0 | 0 | 0 |
在位运算中,数值 1 表示 true,0 表示 false,反之亦然。
12 和 5 进行位与运算,则返回值为 4。
console.log(12 & 5) // 4
|运算符
“|”运算符(位或)用于对两个二进制操作数逐位进行比较,并根据如表格所示的换算表返回结果。
|运算符 | ||
|---|---|---|
| 1 | 1 | 1 |
| 1 | 0 | 1 |
| 0 | 1 | 1 |
| 0 | 0 | 0 |
12 和 5 进行位或运算,则返回值为 13。
console.log(12 | 5) // 13
^运算符
“^”运算符(位异或)用于对两个二进制操作数逐位进行比较,并根据如表格所示的换算表返回结果。
^运算符 | ||
|---|---|---|
| 1 | 1 | 0 |
| 1 | 0 | 1 |
| 0 | 1 | 1 |
| 0 | 0 | 0 |
12 和 5 进行位异或运算,则返回值为 9。
console.log(12 ^ 5) // 9
~运算符
“~”运算符(位非)用于对一个二进制操作数逐位进行取反操作。
- 把运算数转换为 32 位的二进制整数。
- 逐位进行取反操作。
- 把二进制反码转换为十进制浮点数。
console.log( ~12 ) // -13
位非运算实际上就是对数字进行取负运算,再减 1。
console.log( ~ 12 == 12-1) // true