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;
}