《力扣面试150题》题单拓展——位运算
1.基础知识
运算 | 符号 | 解读 |
---|---|---|
并集 | | | ans = ans |4; (1000 ∪ 0010) = 1010 |
交集 | & | 按位求交集 |
移位 | <<左移 | 1<<1 = 10(2进制) int m = l+((r-l)>>1); 二分法常用 |
count = num>>i & 1; //右移i位,并和1与,得到的是i位上面是否是1
int len = 32-__builtin_clz(s); //二进制的长度
//a ^ b = new_ans -> b = a ^ new_ans
2.判断某位是否1
统计每位上面1的个数,模3,按所统计的位并集起来
先统计位数,然后n>>i &1 就可以了
先统计,再移位放回
3.&
n 和 n+1 与后,某一位开始的后面都会被置为0,只有前面的公共前缀会被保留下来,找到即可
4.按位遍历运算
两数之和的异或版本,叠加了 ^ |