常见位运算总结
1.基础位运算
左移 (<<): 最左侧位不要了, 最右侧补 0
右移(>>): 最右侧位不要了, 最左侧补符号位(正数补0, 负数补1)
按位取反(~):如果该位为 0 则转为 1, 如果该位为 1 则转为 0
按位与( & ) | 1&1=1 | 1&0=0 | 0&0=0 | 有0就是0 |
按位或( | ) | 1|1=1 | 1|0=1 | 0|0=0 | 有1就是1 |
按位异或( ^ ) | 1^1=0 | 0^0=0 | 1^0=1 | 相同为0,相异为1 |
2.给定一个数n,确定它的二进制中第x位表示的是0还是1
方法:(n>> x)&1
3.将一个数n的二进制表示的第x位修改成1
方法:n=n | ( 1<<x )
4.将一个数n 的二进制表示的第x位修改成0
方法:n=n&( ~( 1<<x ) )
5. 提取一个数n二进制中最右侧的1
方法:n&-n
6.去掉一个数二进制表示中最右侧的1
方法:n&(n-1)
7.异或运算的运算律
- a^0=a
- a^a=0
- a^b^c=a^(b^c)