位运算的小技巧

 1 // 1. 使用左移运算符 << 迅速得出2的次方
 2 1 << 2  // 4, 即 2的2次方
 3 1 << 10 // 1024, 即 2的10次方
 4 // 但是要注意使用场景
 5 x = 2e9;   // 2000000000
 6 x << 1;    // -294967296
 7 
 8 // 2. 使用 & 判断奇偶性
 9 console.log(7 & 1);    // 1
10 console.log(8 & 1) ;   // 0
11 
12 // 3. 使用~、>>、<<、>>>、|来取整
13 console.log(~~11.71)     // 11
14 console.log(11.71 >> 0)  // 11
15 console.log(11.71 << 0)  // 11
16 console.log(11.71 | 0)   // 11
17 console.log(11.71 >>> 0) // 11
18 // 注意 >>> 不可对负数取整
19 
20 // 4. 使用^来完成值交换
21 let y = 7
22 let z = 1
23 y ^= z
24 z ^= y
25 y ^= z
26 console.log(y)   // 1
27 console.log(z)   // 7
28 
29 // 5. n & (n - 1),如果为 0,说明 n 是 2 的整数幂
30 let n = 24
31 console.log('n & (n - 1)',n & (n - 1))
32 n = 64
33 console.log('n & (n - 1)',n & (n - 1))
34 
35 // 6. 使用 A + 0.5 | 0 来替代 Math.round()  如果是负数,只需要-0.5
36 let p = 24.7
37 console.log(p + 0.5 | 0)
38 p = -24.7
39 console.log(p - 0.5 | 0)

 

posted @ 2023-01-25 01:15  671_MrSix  阅读(7)  评论(0编辑  收藏  举报