JavaScript 按位运算符执行位操作。所有的十进制值都被转换为二进制值(位序列,即 0100、1100、1000、1001 等)。接下来,按位运算符将对这些位进行操作,例如将它们从左到右移动,或者将位值从 0 转换为 1 等。
下表显示了不同的 JavaScript 按位运算符及其含义。例如,考虑 x = 6 和 y = 8,它们的二进制形式分别为:x = 0110 和 y = 1000
| 位运算符 | 含义 | 示例 |
|---|---|---|
| & | 按位与 | X & Y = 0000 |
| | | 按位或 | X | Y = 1110 |
| ^ | 异或 | X ^ Y = 1110 |
| ~ | 补码 | ~X = 00001001 (非运算符会将所有 0 转换为 1。) |
| << | 左移 | X << 1 = 00001100(位将向左移动 1 步。如果使用 2 或 3,它们将相应地移动) |
| >> | 右移 | Y >> 1 = 00000100 |
让我们看看 JavaScript 按位运算符背后的真值表。
| x | y | x & y | X | y | x ^ y |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 | 1 |
| 1 | 0 | 0 | 1 | 1 |
| 1 | 1 | 1 | 1 | 0 |
JavaScript 按位运算符示例
让我们看一个示例以更好地理解。对于此按位运算符示例,我们使用两个变量 a 和 b;它们的值分别为 9 和 65。我们将使用这两个变量来向您展示各种按位操作
<!DOCTYPE html>
<html>
<head>
<title> JavaScriptBitwiseOperators </title>
</head>
<body>
<h1> JavaScriptBitwiseOperators </h1>
<script>
var a = 9, b = 65;
document.write("Bitwise AND Operator a & b = " + (a&b));
document.write("<br \> Bitwise OR Operator a | b = " + (a|b));
document.write("<br \> Bitwise EXCLUSIVE OR Operator a^b = " + (a^b));
document.write("<br \> Bitwise NOT Operator ~a = " + (~a));
document.write("<br \> LEFT SHIFT Operator a << 1 = " + (a << 1));
document.write("<br \> RIGHT SHIFT Operator b >> 1 = " + (b >> 1));
</script>
</body>
</html>

在此 JavaScript 按位运算符程序中,我们声明了两个整数 a 和 b,并分别赋值 9 和 65。9 的二进制形式为 0001001,65 的二进制形式为 1000001。
文档写入语句将对 a 和 b 执行按位操作,然后它们将显示输出。让我们看看 JavaScript 计算
AND 操作 = a&b
0001001 & 1000001 = 0000001 = 1
或运算 = a || b
0001001 || 1000001 = 1001001 = 73
异或操作 = a^b
0001001 ^ 1000001 = 1001000 = 72
JavaScript 按位左移运算符操作:左移一位等于将数字乘以 2。这意味着,
a << 1 = (9 * 2) = 18
如果我们说 a<<2,那么将数字乘以 4,依此类推
OR
a << 1 = 0001001 << 1 = 0010010 = 18
右移操作 = b>> 1
1000001 >> 1 = 0100000 = 32