js实现位移
位移操作基础
在JavaScript中,位移操作通过位运算符实现,包括左移(<<)、有符号右移(>>)和无符号右移(>>>)。这些操作直接对二进制位进行操作,适用于整数(32位有符号数)。

左移(<<)
左移运算符将二进制位向左移动指定位数,右侧补0。每左移一位相当于乘以2。

const num = 5; // 二进制 0101
const result = num << 2; // 010100 (二进制) → 20 (十进制)
console.log(result); // 输出 20
有符号右移(>>)
保留符号位(正负),右侧移出位丢弃,左侧补符号位。每右移一位相当于除以2并向下取整。
const num = -20; // 二进制补码表示
const result = num >> 2; // 保留符号位,结果为 -5
console.log(result); // 输出 -5
无符号右移(>>>)
忽略符号位,右侧移出位丢弃,左侧补0。对于正数,结果与>>相同;负数会变为正数。
const num = -20;
const result = num >>> 2; // 忽略符号位,结果为 1073741819
console.log(result); // 输出 1073741819
应用场景
- 快速乘除:左移/右移替代乘除2的幂次(需注意溢出和负数情况)。
- 颜色操作:分解或组合RGB值时常用位移提取通道。
// 提取RGB中的红色分量 const color = 0xFFA07A; // 珊瑚色 const red = (color >> 16) & 0xFF; // 0xFF console.log(red); // 255
注意事项
- 操作数会被转换为32位整数,超出范围的位会被丢弃。
- 无符号右移可能改变负数的符号,需谨慎使用。
通过合理运用位移操作,可以高效处理底层数据或优化特定计算场景。






