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