关于javascript:JavaScript花里胡哨的位运算技巧

55次阅读

共计 1077 个字符,预计需要花费 3 分钟才能阅读完成。

大佬之所以会被称之为大佬,是因为他们有些操作真的够骚。大佬的代码外面往往充斥了各种“骚操作”,不加正文相对看不懂的那种。令人头疼的一点就是大佬们对位运算的应用,短短几行,就能够让你云里雾里。现整顿了一些位运算的小妙招,尽管花里胡哨,然而足能够令人赞不绝口。

1. 应用左移运算符 << 失去 2 的次方
        console.log(1 << 2) //4————2 的 2 次方
        console.log(1 << 10) //1024————2 的 10 次方 
2. 应用 & 判断奇偶性

偶数 & 1 = 0
奇数 & 1 = 1

        console.log(5 & 1) //1
        console.log(8 & 1) //0
3. 应用 !! 将数字转为布尔值

所有非 0 的值都是 true,包含正数、浮点数

        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

其中 >>> 不能够对正数取整

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 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 的整数幂 

【作者程度无限,欢送大家在评论区交换斧正~】

正文完
 0