操作:
- 先把第k位移到最后一位(右边第一位)
- 看个位是1还是0
lowbit(x):返回x的最右边的1。
原理:
其中 ,意思是 是 的补码。
就可以求出最右边的一位1。
应用:
当中 的个数。
int res = 0; // 1的个数
while(k>0){
if((k&1)==1) res++; //个位是1
k = k>>1; // 向右移一位
}
lowbit(x):返回x的最右边的1。
其中 ,意思是 是 的补码。
就可以求出最右边的一位1。
当中 的个数。
int res = 0; // 1的个数
while(k>0){
if((k&1)==1) res++; //个位是1
k = k>>1; // 向右移一位
}