算法思路
运用c++中的与运算, x&-x。
x原码:10101000
-x原码:01011000
与操作过后得00001000即仅保留最后一个1
自己定义个lowbit一直减就ok
#include<iostream>
using namespace std;
int lowbit(int x){
return x&(-x);
}
int main(){
int n;
cin>>n;
while(n--){
int x;
cin>>x;
int res=0;
while(x) x-=lowbit(x),res++;
cout<<res<<' ';
}
return 0;
}