/************************************************************************/
/*
整数的二进制表示中1 的个数
题目:输入一个整数,求该整数的二进制表达中有多少个1。
例如输入10,由于其二进制表示为1010,有两个1,因此输出2
*/
/************************************************************************/
#include <iostream>
using namespace std;
int NumberOfOne(int n)//算法原理:十进制与二进制间的转化//此算法不好,原因1,除法效率比移位运算效率低,原因2,此算法无法计算负数情况
{
int result=0;
while (n>0)
{
if (n%2==1)
{
result++;
}
n/=2;
}
return result;
}
int NumberOf1_Solution1(int i)
{
int count = 0;
unsigned int flag = 1;
while(flag)
{
if(i & flag)
count ++;
flag = flag << 1;
}
return count;
}
int main()
{
int n;
cout<<"input n\n";
cin>>n;
// cout<<NumberOfOne(n);
// cout<<endl;
cout<<NumberOf1_Solution1(n);
return 0;
}