算法基础——位操作

66 阅读1分钟

n的二进制表示中第k位(从右往左0开始计数)是几

n>>k&1


lowbit(x)(返回x的最后一位1)

eg.

lowbit(1010)=10 lowbit(101000)=1000

x&-x

因为x&-x=x&(~x+1)

应用: 求输入的x二进制中有几个1

int lowbit(int x){
    return x&-x;
}
int main(){
    int n,x,ans=0;
    cin >> n;
    while(n--){
    cin >> x;
    while(x){
        x-=lowbit(x);
        ans++;
    }
    cout << ans << ' ';\
    ans=0;
    }
    return 0;
}