//方法1
#include<iostream>
using namespace std;
int main(){//输入的数字和1按位与,不断右移可以得到1的个数
int n,k;
cin >> n;
while (n --){
cin >> k;
int num = 0;
while(k != 0){
if((k & 1) == 1)
num ++;
k >>= 1;
}
cout<<num<<" ";
}
}
//方法2
#include<iostream>
using namespace std;
int lowbit(int x){//利用lowbit来求解,lowbit(x)是求x的二进制的最后一个1及其之后的0组成的10进制数的大小
return x & -x;//比如x = 10110100,那么返回的就是100的十进制数4
}
int main(){
int n;
cin >> n;
while(n --){
int num = 0,x;
cin >> x;
while(x != 0){
x -= lowbit(x);
num ++;
}
cout << num <<" ";
}
}
//方法3,最常规的计算二进制的过程
#include<iostream>
using namespace std;
int main(){
int n,k;
cin >> n;
while (n --){
cin >> k;
int num = 0;
while(k / 2 != 0 && k != 1){
if (k % 2 == 1)
num ++;
k = k / 2;
}
if (k == 1)
num ++;
cout<<num<<" ";
}
}