1.lowbit函数,返回一个二进制数的最后一位1
int lowbit(int x)
{
return x&(-x);
}
原理是此处的-x即为x的补码,如10100的补码为取反x+1即为01100,用&后便可以返回100,
基于此函数可以用于统计二进制数中1的个数
#include<bits/stdc++.h>
using namespace std;
int n;
int lowbit(int x)
{
return x&(-x);
}
int main()
{
cin>>n;
while(n--)
{
int x;cin>>x;
int ans=0;
while(x)
{
x=x-lowbit(x);
ans++;
}
cout<<ans<<' ';
}
}