①统计二进制数中1的个数
题目:
输入一个正整数,计算二进制形式1的个数
分析:
数在计算机中是以补码的形式存储的,而正数的原反补码相等
负数的补码从左往右数的最后一个1及其右边同原码,左边同反码
x&-x会返回同原码相同的部分,也就是最右边的1及其右边
代码:
#include<iostream>
using namespace std;
int lowbit(int x)
{
return x&-x;
}
int main()
{
int x;
cin>>x;
int res=0;
while(x!=0)
{
x-=lowbit(x);
res++;
}
cout<<res;
return 0;
}