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

来源:互联网 发布:qq管家抢软件 编辑:程序博客网 时间:2024/06/04 18:11

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;}
1 0