JS &、|、^和~(逻辑位运算符)

159 阅读2分钟

定义

位运算就是对二进制数执行计算,是整数的逐位运算。

例如:1+1=2,在十进制计算中是正确的,但是在二进制计算中,1+1=10;对于二进制数 100 取反,等于 001,而不是 -100

分类

位运算符有 7 个,分为两类:

  • 逻辑位运算符:位与(&)位或(|)位异或(^)非位(~)
  • 移位运算符:左移(<<)右移(>>)无符号右移(>>>)

&运算符

&”运算符(位与)用于对两个二进制操作数逐位进行比较,并根据下表所示的换算表返回结果。

&运算符
111
100
010
000

在位运算中,数值 1 表示 true,0 表示 false,反之亦然。

12 和 5 进行位与运算,则返回值为 4。

console.log(12 & 5) // 4

12 & 5

|运算符

“|”运算符(位或)用于对两个二进制操作数逐位进行比较,并根据如表格所示的换算表返回结果。

|运算符
111
101
011
000

12 和 5 进行位或运算,则返回值为 13。

console.log(12 | 5) // 13

12 | 5

^运算符

“^”运算符(位异或)用于对两个二进制操作数逐位进行比较,并根据如表格所示的换算表返回结果。

^运算符
110
101
011
000

12 和 5 进行位异或运算,则返回值为 9。

console.log(12 ^ 5) // 9

12 ^ 5

~运算符

“~”运算符(位非)用于对一个二进制操作数逐位进行取反操作。

  1. 把运算数转换为 32 位的二进制整数。
  2. 逐位进行取反操作。
  3. 把二进制反码转换为十进制浮点数。
console.log( ~12 ) // -13

位非运算实际上就是对数字进行取负运算,再减 1。

console.log( ~ 12 == 12-1) // true