JavaScript 位运算符
提示
- 位运算符基础:JavaScript 位运算符处理 32 位二进制数,执行基本的二进制操作,结果以十进制显示。
- 常用位运算符:包括位与
&
、位或|
、位异或^
、位非~
、左移<<
、带符号右移>>
和无符号右移>>>
。 - 运算符应用示例:位与用于对应位都为 1 时返回 1;位或对其中一个位为 1 时返回 1;位异或对不同位返回 1;位非将所有位取反;左移和右移分别向左或右移动位数,填充空位。
JavaScript 位运算符
位运算符将其操作数视为一组 32 位二进制数字(零和一),并执行操作。但是,结果以十进制值显示。
运算符 | 名称 | 示例 |
---|---|---|
& | 位与(AND) | x & y |
` | ` | 位或(OR) |
^ | 位异或(XOR) | x ^ y |
~ | 位非(NOT) | ~x |
<< | 左移 | x << y |
>> | 带符号右移 | x >> y |
>>> | 无符号右移 | x >>> y |
注意:通过 32 位有符号数可表示的最小和最大整数是 -2147483648 到 2147483647。
JavaScript 位与运算
位与运算 &
当两个操作数的相应位都为 1 时返回 1,否则返回 0。
操作数 1 | 操作数 2 | 与运算结果 |
---|---|---|
0 | 0 | 0 & 0 是 0 |
0 | 1 | 0 & 1 是 0 |
1 | 0 | 1 & 0 是 0 |
1 | 1 | 1 & 1 是 1 |
让我们看一下两个整数 12 和 25 的位与运算。
以二进制表示,
12 = 01100
25 = 11001
// 12 和 25 的位与运算
00001100
& 00011001
---------
00001000 = 8(十进制)
注意:将 12 转换为 32 位二进制,我们得到 00000000000000000000000000001100
,25 得到 00000000000000000000000000011001
。但为了简化,我们省略了前导零。
示例 1:位与运算符
// 位与运算符示例
let a = 12;
let b = 25;
result = a & b;
console.log(result); // 8
在上面的程序中,
- 12 的二进制值是
00000000000000000000000000001100
- 25 的二进制值是
00000000000000000000000000011001
。 - 当执行位与运算时,二进制结果为
00000000000000000000000000001000
,转换为十进制值 8。
JavaScript 位或运算
位或运算 |
当其中一个操作数的相应位有一个为 1 时返回 1,否则返回 0。
操作数 1 | 操作数 2 | 或运算结果 |
---|---|---|
0 | 0 | `0 |
0 | 1 | `0 |
1 | 0 | `1 |
1 | 1 | `1 |
让我们看一下两个整数 12 和 25 的位或运算。
以二进制表示,
12 = 01100
25 = 11001
// 12 和 25 的位或运算
00001100
| 00011001
--------
00011101 = 29(十进制)
```### 示例 2:位或运算符
```js exec
// 位或运算符示例
let a = 12;
let b = 25;
result = a | b;
console.log(result); // 29
当执行位或运算时,二进制结果为 00000000000000000000000000011101
,转换为十进制值 29。
JavaScript 位异或运算
位异或运算 ^
当相应位不同返回 1,相同则返回 0。
操作数 1 | 操作数 2 | 异或运算结果 |
---|---|---|
0 | 0 | 0 ^ 0 是 0 |
0 | 1 | 0 ^ 1 是 1 |
1 | 0 | 1 ^ 0 是 1 |
1 | 1 | 1 ^ 1 是 0 |
以二进制表示,
12 = 01100
25 = 11001
// 12 和 25 的位异或运算
00001100
^ 00011001
--------
00010101 = 21(十进制)