JavaScript 位运算笔记
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 之前一直以为,在js的位运算中,双精度浮点数在内部会先被转成32位整数,再执行位运算,然后再转为64位数值,因此效率极低。今天实验发现,对浮点执行位运算只会导致数值不准确,而不会导致效率低下,相比乘法,左移位要快66%(其实就是浮点运算与整数运算的差距)。 以下结果在 IE 7 ~ IE 10 上测试得出 技巧1:移位运算比乘除法快(当因数是2的幂数) <!-- lang: js --> b = a << 1; 大概快 6.8% 技巧2:奇偶判断 <!-- lang: js --> b = a & 1; 0位与1相与,相比于 x % 2,大概快 35% 技巧3:判断两个数符号是否相同 <!-- lang: js --> (a ^ b) >= 0 相比于 <!-- lang: js --> if ( a == 0 ) return 1; else if ( a > 0 ) return b >= 0; else return b <= 0; 其效率基本一样,但更简洁。 相比于 <!-- lang: js --> (a * b) >= 0; 不会有溢出问题。 技巧4:判断一个数是否为2的幂 <!-- lang: js --> (a & (a - 1)) == 0; 来源: oschina 链接: https:/