位运算的骚操作

373 阅读1分钟

由于位运算直接对内存中的数据进行操作,不需要转换成十进制,因此处理十分快。

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