将1个int 类型的数据进行移位判断每次只判断最低位是否位1 ,
int 类型 4*8=32位,最多移动31次,
#include<iostream>
using namespace std;
const int N =1e5+10;
int n;
int q[N],ans[N];
int getbit(int num)
{
int sum=0;
while(num)
{
if(num%2==1)sum++;
num=num>>1;
}
return sum;
}
int main()
{
//输入数据
scanf("%d",&n);
for(int i=0;i<n;i++)scanf("%d",&q[i]);
//计算该数据对应的1的个数
for(int i=0;i<n;i++)
{
ans[i]=getbit(q[i]);
}
//打印结果
for(int i=0;i<n;i++)
cout<<ans[i]<<' ';
}