/********************************************************
输入一个int型数据,计算出它在内存中存储时含1的个数
比如:
输入:5
输出:2
********************************************************/
#include<iostream>
int CountOne(int num)
{
int count = 0;
while(num){
count++;
num &= (num-1);
}
return count;
}
int main()
{
std::cout<<"please input your number\n";
int number,numberofone;
std::cin>>number;
numberofone = CountOne(number);
std::cout<< numberofone;
}
修改于20150901
通用一点的版本是:
#include<iostream>
using namespace std;
int GetCountOfOne(unsigned nNum)
{
int c = 0;
while(nNum)
{
if (nNum%2) c++;
nNum /= 2;
}
return c;
}
int main()
{
unsigned num;
cin>>num;
cout<<GetCountOfOne(num);
}