JS 一些位操作的妙用
&(按位与)
判断一个数是否为2的n次幂,可以将其与自身减一相与
var number = 4
(number & number -1) === 0 // true
^(按位异或)
不用第三个变量,就可以交换两个变量的值
var a = 4,b = 3
a = a ^ b // 7
b = a ^ b // 4
a = a ^ b // 3
或者还有这样的操作也可以达成效果
var a=1,b=2;a=[b,b=a][0];
~(按位非)
~~1.34 === 1 // true,舍弃小数取整。与Math.floor和Math.ceil不同,与parseInt()函数功能大体相同,~~无法返回NaN结果。