[Javascript] 位运算
概述
JavaScript 中所有位运算都会先将操作数通过 ToInt32 转为 32 位有符号整数(补码),再按位进行计算。常用于标志位管理、快速取整、高效色彩处理等场景。
常见运算符
运算符 | 名称 | 说明 |
---|---|---|
& |
按位与 | 两位都为 1 时,结果为 1 |
| |
按位或 | 任一位为 1 时,结果为 1 |
^ |
按位异或 | 不同位时,结果为 1 |
~ |
按位非 | 对所有位取反;~x === -x - 1 |
<< |
带符号左移 | 左移并补低位 0;相当于乘以 2ⁿ |
>> |
带符号右移 | 右移并保持符号;高位补符号位 |
>>> |
无符号右移 | 右移并补高位 0;结果总为非负数 |
示例
let a = 5 // 0000 0000 0000 0000 0000 0000 0000 0101
let b = 3 // 0000 0000 0000 0000 0000 0000 0000 0011
a & b // 1 (0001)
a | b // 7 (0111)
a ^ b // 6 (0110)
~a // -6 (按位取反后加一)
a << 1 // 10 (左移一位,相当于 ×2)
a >> 1 // 2 (带符号右移,保留符号)
a >>> 1 // 2 (无符号右移,高位补零)