「你不知道的 JS 黑科技!」按位操作符助你写出高效、优雅、不可思议的代码!

18 阅读2分钟

一、什么是按位操作符,凭什么说它高效?

按位操作符,顾名思义,就是直接操作二进制位的运算符。相比普通的加减乘除直接对数字操作,按位运算对底层比特位动刀,用极低的“计算成本”达成惊艳的效果,比如数据加密、权限位、极致性能优化等。


二、重温基础:七大必杀技一看就会

操作符名称示例结果解释
&按位与 AND5 & 31只有两位都为 1 才为 1
|按位或 OR`53`7有一个为 1 就是 1
^按位异或 XOR5 ^ 36相同为 0,不同为 1
~按位非 NOT~5-6取反:0 为 1,1 为 0
<<左移5<<110二进制左移 n 位,相当于乘以 2 的 n 次方
>>有符号右移-8>>2-2右移,高位补原符号位,保留正负号
>>>无符号右移-8>>>21073741822右移,高位永远补 0

三、爆款实用技巧&神操作案例

1. 急速整数取整(加速数值运算)

let num = 5.987;
let intNum = num | 0; // 得到5,效率惊人!

Math.floor() 快得多!

2. 权限控制一个数,管理8个权限只需一行代码

// 3 => 二进制 00000011,代表第0、1个权限有
let permissions = 3;
let hasRead = (permissions & 1) != 0; // 读权限
let hasWrite = (permissions & 2) != 0; // 写权限

3. 数据交换,不用中间变量

let a = 3, b = 6;
a = a ^ b;
b = a ^ b;
a = a ^ b;
// 结果:a=6, b=3

4. 牛X:高效判断奇偶性!

let n = 5;
if (n & 1) {
  console.log("数字为奇数");
} else {
  console.log("数字为偶数");
}

简洁又高效!

5. 快速倍增/减半

let x = 7;
let y = x << 2; // 快速 x*4
let z = x >> 1; // 快速 x/2

四、进阶玩法:按位操作 x 算法优化

位掩码应用:批量开关控制

// 比如 0b1010 表示四盏灯(第1、3盏亮着)
let lampStatus = 0b1010;
// 只亮第2盏
lampStatus = lampStatus | 0b0010;

超级压缩存储:空间省到极致

  • 一组二进制的按位组合,能高效地存储大量布尔型数据!

五、结语

如果你觉得这篇文章有用,记得点赞、收藏、分享,关注我查看更多前端干货!