或运算
在 JavaScript 中,或运算符用符号 |
表示。它是一个按位运算符,它对两个操作数的每一位执行“或”运算。
或运算的规则如下:
如果两个操作数的相应位都是 0,则结果为 0。
如果两个操作数的相应位至少有一个是 1,则结果为 1。
例如,假设有两个二进制数 1010
和 1100
,它们进行或运算后的结果如下:
1010
| 1100
----
1110
异或运算
在 JavaScript 中,异或运算符用符号 ^
表示。它是一个按位运算符,它对两个操作数的每一位执行“异或”运算。
异或运算的规则如下:
如果两个操作数的相应位不同,则结果为 1。
如果两个操作数的相应位相同,则结果为 0。
例如,假设有两个二进制数 1010
和 1100
,它们进行异或运算后的结果如下:
1010
^ 1100
----
0110
实例:交换两个变量的值
a = a ^ b;
b = a ^ b;
a = a ^ b;
移位运算
在 JavaScript 中,移位运算符包括左移位运算符 <<
、右移位运算符 >>
和带符号右移位运算符 >>>
。这些运算符都是按位运算符,用于将二进制数的位向左或向右移动指定的位数。
左移位运算符 <<
将一个数的二进制位向左移动指定的位数,空出的位用 0 填充。例如:
const num = 5; // 二进制:0101
const result = num << 2; // 左移两位,得到二进制数 010100
console.log(result); // 输出 20
在这个例子中,我们将数字 5 的二进制位向左移动了两位,得到了二进制数 010100
,它的十进制值为 20。
右移位运算符 >>
将一个数的二进制位向右移动指定的位数,空出的位用符号位填充。例如:
const num = -5; // 二进制:11111111111111111111111111111011(补码表示)
const result = num >> 2; // 右移两位,得到二进制数 11111111111111111111111111111110(补码表示)
console.log(result); // 输出 -2
在这个例子中,我们将数字 -5 的二进制位向右移动了两位,得到了二进制数 11111111111111111111111111111110
(补码表示),它的十进制值为 -2。
带符号右移位运算符 >>>
将一个数的二进制位向右移动指定的位数,空出的位用 0 填充。例如:
const num = -5; // 二进制:11111111111111111111111111111011(补码表示)
const result = num >>> 2; // 右移两位,得到二进制数 00111111111111111111111111111110
console.log(result); // 输出 1073741822
在这个例子中,我们将数字 -5 的二进制位向右移动了两位,得到了二进制数 00111111111111111111111111111110
,它的十进制值为 1073741822
。注意,在使用带符号右移位运算符时,负数会被转换为无符号整数,因此结果可能会比原来的值大。