平常的数值运算都是转成二进制再进行计算,而位运算则是直接进行二进制,因此执行效率会比较高,而且有的地方使用位运算会使得代码很精简,当然缺点是代码的可读性不是很好;下面介绍几种常用的位运算:
一、取整
// 异或运算取整::位运算只对整数有效,遇到小数时,会将小数部分舍去,只保留整数部分。所以,将一个小数与0进行或运算,等同于对该数去除小数部分,即取整数位。
12.9 ^ 0 // 12
-12.9 ^ 0 // -12
// 双否定位操作符取整
~~4.9 // 4
~~(-4.9) // -4
// 左移0位,就相当于将该数值转为32位整数,等同于取整,对于正数和负数都有效。
13.5 << 0 // 13
-13.5 << 0 // -13
// 或运算取整:位运算只对整数有效,遇到小数时,会将小数部分舍去,只保留整数部分。所以,将一个小数与0进行或运算,等同于对该数去除小数部分,即取整数位。
2.9 | 0 // 2
-2.9 | 0 // -2
题外话:Math.round是四舍五入的。。。ceiling是向上取整。。float是向下取整
二、判断奇数、偶数
function assert(n) {
if (n & 1) {
console.log("n是奇数");
} else {
console.log("n是偶数");
}
}
三、推荐趣题:
你只有 10 只小白鼠和一星期的时间,如何检验出哪个瓶子里有毒药?
参考资料:
js中使用位运算,让执行效率更高
网友评论