符号 | 描述 | 运算规则 |
---|---|---|
& | 与 | 1,1得1 |
| | 或 | 两个0才是0。1,0为1。 |
^ | 异或 | 相同为0,相异为1 |
~ | 取反 | ~0=1,~1=0 |
<< | 左移 | 左移若干位高位丢弃,低位补0 |
>> | 右移 | 右移若干位 高位补0 |
异或。
- 异或的规则。
x^0 = x
x^1s = ~x
x^(~x) = 1s
x^x = 0
a^b = c => a^c = b ,b^c = a
a^b^c = a^(b^c)=(a^b)^c
2.常见的的操作
x&1==1 x&1==0 判断奇偶
x = x&(x-1) 清零最低位的1
x&-x 得到最低位的1
3.复杂的操作
x&(~0<<n) 讲x右边n位清零
(x>>n)&1 获取x第n位的值
x&(1<<(n-1)) 获取x的第n位的幂值
x|(1<<n) 将第n位为1
x&(~(1<<n)) 将第n为为0
x&((1<<n)-1) x最高位至第n位清零
x&(~(1<<(n+1))-1)) 将第n位至第0位清零
例题
int hammingWeight(uint32_t n) {
int number = 0;
while(n>0){
n = n&(n-1);
number++;
}
return number;
}
网友评论