题目描述:实现一个函数,输入一个整数,输出该数二进制中1的个数。
过程分析:
代码实现:
#include<iostream>
using namespace std;
int GetOneNum_1(int n) //第一种方法:标志位移动
{
int count = 0;
unsigned int flag = 1;
while(flag)
{
if(n & flag)
{
count ++;
}
flag = flag << 1;
}
return count;
}
int GetOneNum_2(int n) //第二种方法:数字移动
{
int count = 0;
while(n)
{
count ++;
n = (n-1) & n;
}
return count;
}
int main()
{
cout<<GetOneNum_1(1)<<endl;
cout<<GetOneNum_1(7)<<endl;
cout<<GetOneNum_1(-1)<<endl;
cout<<GetOneNum_1(8)<<endl;
cout<<GetOneNum_2(1)<<endl;
cout<<GetOneNum_2(7)<<endl;
cout<<GetOneNum_2(-1)<<endl;
cout<<GetOneNum_2(8)<<endl;
return 0;
}