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

Posted 翟天保Steven

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了华为机试HJ15:求int型正整数在内存中存储时1的个数相关的知识,希望对你有一定的参考价值。

题目描述:

输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数。

输入描述:

输入一个英文语句,每个单词用空格隔开。保证输入只包含空格和字母。

输出描述:

这个数转换成2进制后,输出1的个数

示例:

输入:5

输出:2

解题思路:

判断2进制中1的个数有两个常用办法:第一个就是位运算,yyds;第二个就是右移赋值,统计1的个数。

测试代码:

位运算

#include<iostream>

using namespace std;

int main() {
	
	int n;
	cin >> n;
	int count;
	for (count = 0; n; n &= n - 1)
	{
		count++;
	}
	cout << count << endl;
	return 0;
}

右移运算

#include<iostream>

using namespace std;

int main () {
    
    int n, res = 0;
    cin >> n;
    while(n) {
        if(n % 2) res ++;
        n >>= 1;
    }
    cout << res << endl;
    return 0;
}

以上是关于华为机试HJ15:求int型正整数在内存中存储时1的个数的主要内容,如果未能解决你的问题,请参考以下文章

HJ15 求int型正整数在内存中存储时1的个数_Scala

HJ15 求int型正整数在内存中存储时1的个数_Scala

华为python机试题目:明明的随机数汽水瓶求int型正整数在内存中存储时1的个数取近似值蛇形矩阵数据分类处理数字颠倒

[NewCoder]求int型正整数在内存中存储时1的个数

华为机试HJ108:求最小公倍数

华为机试HJ108:求最小公倍数