题目描述
输入描述:输入一个整数
输出描述:计算整数二进制中1的个数
示例
输入:5
输出:2
解题思路
本题是计算一个数二进制表示中1的个数,通过(n >> i) & 1可以获取第i位的二进制值,每次n右移一位,可以获取一位的二进制值,右移32次,n变成0,循环终止。
完整代码
#include <iostream>
using namespace std;
int findNumberOf1(int num)
{
int count=0;
while(num)
{
if(num&1)
count++;
num=num>>1;
}
return count;
}
int main()
{
int n;
while(cin>>n)
{
int count=findNumberOf1(n);
cout<<count<<endl;
}
return 0;
}