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

来源:互联网 发布:时序性数据库 编辑:程序博客网 时间:2024/06/05 22:47

题目描述:

输入一个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


0 0
原创粉丝点击