华为机试HJ62:查找输入整数二进制中1的个数
Posted 翟天保Steven
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了华为机试HJ62:查找输入整数二进制中1的个数相关的知识,希望对你有一定的参考价值。
作者:Steven
版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处
题目描述:
输入一个正整数,计算它在二进制下的1的个数。
注意多组输入输出!!!!!!
输入描述:
输入一个整数
输出描述:
计算整数二进制中1的个数
示例:
输入:
5
输出:
2
说明:
5的二进制表示是101,有2个1
解题思路:
本题用NumberOfOne函数计算整数二进制下的1的个数,一般可以用位运算或者右移运算实现。我这里采用了右移运算,将二进制数字余2,如果等于1,说明末位是1,count++,然后右移一下,直到number为0。比如5,二进制为101,右移一次010,再一次001。
测试代码:
#include <iostream>
using namespace std;
int NumberOfOne(int number)
{
int count=0;
while(number)
{
if(number%2==1)count++;
number>>=1;
}
return count;
}
int main()
{
int number;
while(cin>>number)
{
cout<<NumberOfOne(number)<<endl;
}
return 0;
}
以上是关于华为机试HJ62:查找输入整数二进制中1的个数的主要内容,如果未能解决你的问题,请参考以下文章