华为机试HJ62:查找输入整数二进制中1的个数

简介: 华为机试HJ62:查找输入整数二进制中1的个数

题目描述:

输入一个正整数,计算它在二进制下的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;
}


相关文章
|
7月前
二进制中1的个数
二进制中1的个数
42 0
|
7月前
|
C语言
【C语言】输入一个数n,输出从n到n+100的范围内所有的素数,并统计素数的个数
【C语言】输入一个数n,输出从n到n+100的范围内所有的素数,并统计素数的个数
411 0
|
7月前
|
C++
Acwing.26 二进制中1的个数
Acwing.26 二进制中1的个数
|
7月前
|
算法
算法题 — 整数转二进制,查找其中1的数量
算法题 — 整数转二进制,查找其中1的数量
53 0
|
7月前
|
C语言
[C语言][题]获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列
[C语言][题]获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列
52 0
|
容器
华为机试HJ80:整型数组合并
华为机试HJ80:整型数组合并
230 1
华为机试HJ58:输入n个整数,输出其中最小的k个
华为机试HJ58:输入n个整数,输出其中最小的k个
华为机试HJ59:找出字符串中第一个只出现一次的字符
华为机试HJ59:找出字符串中第一个只出现一次的字符
|
存储 容器
华为机试HJ23:删除字符串中出现次数最少的字符
华为机试HJ23:删除字符串中出现次数最少的字符
|
容器
华为机试HJ10:字符个数统计
华为机试HJ10:字符个数统计