js实现位移
位移运算基础
JavaScript 提供三种位移操作符:
-
左移 (
<<):将二进制数向左移动指定位数,右侧补零。let num = 5; // 二进制 0101 let result = num << 2; // 010100 (20) -
有符号右移 (
>>):保留符号位(正负),向右移动指定位数,左侧补符号位。let num = -10; // 二进制补码表示 let result = num >> 2; // 保留符号位,结果为 -3 -
无符号右移 (
>>>):向右移动指定位数,左侧补零(忽略符号位)。let num = -10; let result = num >>> 2; // 补零后结果为 1073741821
应用场景
-
快速计算乘除:左移一位等价于乘以 2,右移一位等价于除以 2(仅适用于整数)。
let value = 8; let multiply = value << 1; // 16 (8*2) let divide = value >> 1; // 4 (8/2) -
颜色值处理:提取 RGB 分量时常用无符号右移。
let color = 0xFFAACC; let red = (color >> 16) & 0xFF; // 0xFF let green = (color >> 8) & 0xFF; // 0xAA
注意事项
- 位移操作仅适用于 32 位整数,超过范围的数值会截断。
- 无符号右移 (
>>>) 可能将负数转为大正数,需谨慎使用。
示例:循环位移
实现 32 位数的循环左移:
function rotateLeft(value, shift) {
return (value << shift) | (value >>> (32 - shift));
}
let num = 0x12345678;
console.log(rotateLeft(num, 4).toString(16)); // 输出循环左移结果






