位运算符
含义 | 运算符 | 示例 |
---|---|---|
左移 | << | 0011=>0110 |
右移 | >> | 0110=>0011 |
按位或 | \ | 0011\1011=>1011 |
按位与 | & | 0011&1011=>0011 |
按位取反 | ~ | 0011=>1100 |
按位异或(相同为0不同为1) | ^ | 0011&1011=>1000 |
x^0=x
x^x=0
指定位置的位运算
- 将x最右边的n位清零:x&(~0<<n)
- 获取x的第n位的值(0或1):(x>>n)&1
- 获取x的第n位的幂值:x&(1<<n)
- 仅将第n位置为1:x|(1<<n)
- 仅将第n位置为0:x&(~(1<<n))
- 将x最高位至第n位(含)清零:x&((1<<n)-1)
实战位运算要点
- 判断奇偶
x%2 == 1 => (x&1) == 1
x%2 == 0 => (x&1) == 0 - x>>1 =>x/2
- x=x&(x-1)清零最低位的1
- x&-x=>得到最低位的1
- x&~x=>0