位运算中常常有一些很骚的思路,本文整理了算法题中常见的位运算的细节。
1.不用中间变量交换2个数的值
a = a^b
b = a^b
a = a^b
解释:b = a^a^b, a = a^b^b
同样原理适用于题目:找出数组中不重复的元素,其他元素均出现2次
2.计算数字的二进制中有多少个1
法1:常规解法:循环右移。,每次判断最后1位是不是1 (n&1)==1
法2:n&(n-1) 每次去掉二进制从前往后的最后1个1
3.每次改变一个数中二进制的一位
n^(1<<i) :表示改变n的第i位