由于位运算直接对内存中的数据进行操作,不需要转换成十进制,因此处理十分快。
XOR(异或)
相同为0,不相同为1。 异或操作的特征:
x ^ 0 =x
x ^ (~x) = 1s //1s表示全为1
x ^ x = 0 // very important !!!
位运算的骚操作
交换变量
可以通过异或操作交换变量值 ,而且不用引入临时变量,不过仅限于数值类型
a^=b; b^=a; a^=b;
判断奇偶
x & 1 ===1 //x为奇数
x & 1 ===0 //x为偶数
判段元素是否重复
x ^ x = 0 //一个数与另一个数异或等于0,说明他们相等,也就是说重复了
将字符串转换成数值(字符串必须是十进制数值类型)
~~'42' // 42
取整
~~2.9 // 2
~~4.111 //4
清零最低位的1
x = x&(x-1)
得到最低位的1
x & -x