位运算是指直接对二进制数进行操作的运算。JavaScript 支持以下位运算符:
-
按位与运算符(&)
- 两个位都为 1 时,结果才为 1,否则为 0。
-
按位或运算符(|)
- 两个位都为 0 时,结果才为 0,否则为 1。
-
按位异或运算符(^)
- 两个位相同为 0,不同为 1。
-
按位非运算符(~)
- 反转操作数的所有位,即 0 变成 1,1 变成 0。
-
左移位运算符(<<)
- 把操作数的所有位向左移动指定的位数,右边用 0 填充。
-
有符号右移位运算符(>>)
- 把操作数的所有位向右移动指定的位数,左边用原来的符号位填充。如果是正数,就在左边插入 0;如果是负数,就在左边插入 1。
-
无符号右移位运算符(>>>)
- 把操作数的所有位向右移动指定的位数,左边用 0 填充。
以下是一些例子:
const a = 0b1010; // 二进制数 1010,十进制数为 10
const b = 0b1100; // 二进制数 1100,十进制数为 12
console.log(a & b); // 二进制数 1000,十进制数为 8
console.log(a | b); // 二进制数 1110,十进制数为 14
console.log(a ^ b); // 二进制数 0110,十进制数为 6
console.log(~a); // 二进制数 0101,十进制数为 -11
console.log(a << 2); // 二进制数 101000,十进制数为 40
console.log(b >> 1); // 二进制数 0110,十进制数为 6
console.log(b >>> 1);// 二进制数 0110,十进制数为 6