Talk is cheap, show me the code.
一、问题描述
输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数。
输入描述:
输入一个整数(int类型)
输出描述:
这个数转换成2进制后,输出1的个数
输入例子:
5
输出例子:
2
二、问题分析
这道题有几种思路,最基本的是根据十进制转二进制的方法一个个统计1的个数。也可以使用标准库中的bitset。
解题方式1:
最基本的十进制转二进制方法,统计1的个数。
#include <iostream>
using namespace std;
int main()
{
int num;
while (cin >> num)
{
int count = 0;
while (num)
{
if (num % 2)
{
count++;
}
num /= 2;
}
cout << count << endl;
}
return 0;
}
解题方式2:
使用标准库bitset。
#include <iostream>
#include <bitset>
using namespace std;
int main()
{
int num;
while (cin >> num)
{
bitset<32> bs(num);
cout << bs.count() << endl;
}
return 0;
}