您的位置:首页 > 其它

求int型数据在内存中存储时1的个数

2016-03-26 11:06 211 查看
题目描述:

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

知识点: 字符串,查找

输入: 输入一个整数(int类型)

输出: 该数转换成2进制后1的个数

样例输入: 5

样例输出: 2

思路:

该题要考虑全面,正整数、0、负整数三种情况。

因为0、正整数在内存中存储方式简单,但对于负整数,其存储方式为补码,求解起来比较困难。

这种思路其实已经把自己困住了。

好的思路是,对于输入的整型数,在内存中的形式已经形成。只需要对每一位进行判断即可。

其中,算术移位运算符是<<和>>,对于最高/低位做补0操作。

代码:

#include <iostream>
using namespace std;
int main()
{
int num, count = 0;
cin >> num;
for (int i = 0; i < 32; i++)
{
if (num & 1)
count++;
num = num >> 1; // num >>= 1;
}
cout << count;
return 0;
}

得分运行时间内存复杂度最大嵌套深度
98(100)16ms2072KB33
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: