华为机试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;
}


相关文章
|
存储
第一个只出现一次的字符(OJ题)
第一个只出现一次的字符(OJ题)
66 0
|
8月前
|
数据安全/隐私保护
微机原理||十进制输入、数组中负数个数、字符串比较程序
微机原理||十进制输入、数组中负数个数、字符串比较程序
|
9月前
|
算法
算法题 — 整数转二进制,查找其中1的数量
算法题 — 整数转二进制,查找其中1的数量
62 0
|
9月前
|
C语言
[C语言][题]获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列
[C语言][题]获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列
58 0
|
容器
华为机试HJ80:整型数组合并
华为机试HJ80:整型数组合并
249 1
华为机试HJ58:输入n个整数,输出其中最小的k个
华为机试HJ58:输入n个整数,输出其中最小的k个
华为机试HJ59:找出字符串中第一个只出现一次的字符
华为机试HJ59:找出字符串中第一个只出现一次的字符
|
容器
华为机试HJ10:字符个数统计
华为机试HJ10:字符个数统计
|
存储 容器
华为机试HJ23:删除字符串中出现次数最少的字符
华为机试HJ23:删除字符串中出现次数最少的字符
华为机试HJ9:提取不重复的整数
华为机试HJ9:提取不重复的整数