lowbit(x)
lowbit(x)其实就是统计二 x 二进制1的个数。 它的原理实际上是 lowbit(x)=x&(~x+1)。
x&(~x+1)的运算过程如下:
#include<iostream>
using namespace std;
int lowbit(int x)
{
return x & (-x);
}
int main()
{
int n=0;
cin>>n;
while(n--)//n个样例
{
int res=0;//注意 res要放while循环里,每个样例都要重新计数
int x=0;
cin>>x;//输入样例
while(x)x-=lowbit(x),res++;//x减去1 能减多少次说明有多少个1 每减一次 res都计数一次,这样就把1个数统计出来了
cout<<res<<' ';
}
return 0;
}