写在前面
正文
x&(-x)
返回
x
x
x 的二进制数最低位为
1
1
1 的权值
例如
10100最低位的1权值是4
1001010最低位的1权值是2
111最低位的1权值是1
x<<n
返回
x
∗
2
n
x~*~2^n
x ∗ 2n
例如
5 << 1 ,返回 25
2 << 2 ,返回 8
x>>n
返回
x
/
2
n
x~/~2^n
x / 2n
例如
4 >> 1 ,返回 2
x&(x-1)
将 x x x 最右边的第一个 1 1 1 变成 0 0 0
x&(~(x-1))
返回 x x x(二进制表示)中是 1 1 1 的最低位
统计数字中1的个数
int func(int x){
int countx = 0;
while(x){
countx++;
x = x&(x-1);
}
return countx;
}