JavaScript-花裏胡哨的位運算技巧

大佬之因此會被稱之爲大佬,是由於他們有些操做真的夠騷。大佬的代碼裏面每每充滿了各類「騷操做」,不加註釋絕對看不懂的那種。使人頭疼的一點就是大佬們對位運算的使用,短短几行,就能夠讓你雲裏霧裏。現整理了一些位運算的小妙招,雖然花裏胡哨,可是足能夠使人拍案叫絕。code

1.使用左移運算符 << 獲得2的次方
console.log(1 << 2) //4————2的2次方
        console.log(1 << 10) //1024————2的10次方
2.使用 & 判斷奇偶性

偶數 & 1 = 0
奇數 & 1 = 1leetcode

console.log(5 & 1) //1
        console.log(8 & 1) //0
3.使用 !! 將數字轉爲布爾值

全部非0的值都是true,包括負數、浮點數console

console.log(!!1) //true
        console.log(!!0) //false
        console.log(!!-1) //true
        console.log(!!6.18) //true
4.使用~~ >> << >>> | 來取整

至關於使用了 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

5.使用 n + 0.5 | 0 來對n進行四捨五入

至關於 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
6.使用^判斷符號是否相同

(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
7.n & (n - 1) 判斷n是否爲2的整數冪

若是爲 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的整數冪

【做者水平有限,歡迎你們在評論區交流指正~】位運算

相關文章
相關標籤/搜索