思路
- lowbit是返回一个二进制数最后一位1的位置
- 我们只需要每次把二进制中的最后一位1减去,减完的次数就是1的个数,就是答案
#include <iostream>
#include <cstdio>
using namespace std;
//lowbit找出二进制最后一位1的位置
int lowbit(int x)
{
return x&-x;
}
int main()
{
int n;
int a;
int x = 0;
scanf("%d",&n);
while(n--)
{
scanf("%d",&a);
x = 0;
while(a)
{
a-=lowbit(a);
x++;
}
printf("%d ",x);
}
return 0;
}