华为机试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的个数的主要内容,如果未能解决你的问题,请参考以下文章

华为机试HJ15:求int型正整数在内存中存储时1的个数

华为机试HJ97:记负均正

华为机试HJ97:记负均正

华为机试HJ6:质数因子

华为机试HJ25:数据分类处理

华为机试HJ33:整数与IP地址间的转换