大佬之因此会被称之为大佬,是由于他们有些操做真的够骚。大佬的代码里面每每充满了各类“骚操做”,不加注释绝对看不懂的那种。使人头疼的一点就是大佬们对位运算的使用,短短几行,就能够让你云里雾里。现整理了一些位运算的小妙招,虽然花里胡哨,可是足能够使人拍案叫绝。code
console.log(1 << 2) //4————2的2次方 console.log(1 << 10) //1024————2的10次方
偶数 & 1 = 0
奇数 & 1 = 1leetcode
console.log(5 & 1) //1 console.log(8 & 1) //0
全部非0的值都是true,包括负数、浮点数console
console.log(!!1) //true console.log(!!0) //false console.log(!!-1) //true console.log(!!6.18) //true
至关于使用了 Math.floor()注释
console.log(~~11.11) // 11 console.log(11.11 >> 0) // 11 console.log(11.11 << 0) // 11 console.log(11.11 | 0) // 11 console.log(11.11 >>> 0) // 11 console.log(-11.11 >>> 0) // 4294967285
其中 >>> 不能够对负数取整co
至关于 Math.round()浮点数
let x = 11.99; let y = 11.11; console.log(x + 0.5 | 0) //12 console.log(y + 0.5 | 0) //11 // 若是是负数,则变成 A - 0.5 | 0 let r = -11.99; let z = -11.11; console.log(r - 0.5 | 0) //-12 console.log(z - 0.5 | 0) //-11
(a ^ b) >= 0; // true 相同; false 不相同let
let a = 11; let b = 12; let c = -13; console.log((a ^ b) >= 0) //true console.log((a ^ c) >= 0) //false
若是为 0,说明 n 是 2 的整数幂
leetcode#231数字
let d = 20; let e = 32; console.log(d & (d - 1)) //16————说明d不是2的整数幂 console.log(e & (e - 1)) //0————说明e是2的整数幂
【做者水平有限,欢迎你们在评论区交流指正~】位运算