求int型正整数在内存中存储时1的个数
来源:互联网 发布:网络应用层协议有哪些 编辑:程序博客网 时间:2024/06/15 15:23
题目描述
输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数。
输入描述:
输入一个整数(int类型)
输出描述:
这个数转换成2进制后,输出1的个数
输入例子:
5
输出例子:
2
解题思路
首先考虑一个问题,如何将一个十进制整数转化为一个二进制数呢?首先,int型整数在内存中占用4个字节,即32位。其中第一位是符号位,负整数的符号位为1,正整数的符号位为0。因此,我们不妨考虑正整数的情况,负整数可以转化为正整数进行处理。
对于一个正整数num,不停地对它除以2,直到商为0,得到的余数就构成相应的二进制数。因此,我们只需要记录这些余数中1的个数即可。
需要注意的是,最小负整数INT_MIN是无法转化为相应的正整数的,但是它对应的二进制数是已知的,即32位都是1。
代码
#include <iostream>#include <climits>using namespace std;int main(){ int num; cin >> num; int count = 0; if (num == INT_MIN) //最小负数 count = 32; else if (num < 0) //其它负数 { num = -num; //化为正数处理 count = 1; //负数的符号位为1 } while (num > 0) { if (num % 2) count++; num >>= 1; } cout << count << endl; return 0;}
阅读全文
0 0
- Java-NowCoder-求int型正整数在内存中存储时1的个数
- nowcoder--求int型正整数在内存中存储时1的个数
- 求int型正整数在内存中存储时1的个数
- 【华为OJ15】求int型正整数在内存中存储时1的个数
- 14:求int型正整数在内存中存储时1的个数
- 华为oj之求int型正整数在内存中存储时1的个数
- 求int型正整数在内存中存储时1的个数
- [编程题]求int型正整数在内存中存储时1的个数
- 华为OJ:求int型正整数在内存中存储时1的个数
- 求int型正整数在内存中存储时1的个数
- 15——求int型正整数在内存中存储时1的个数
- 求int型正整数在内存中存储时1的个数
- 6.求int型正整数在内存中存储时1的个数
- 【华为OJ】求int型正整数在内存中存储时1的个数
- 求int型正整数在内存中存储时1的个数
- 华为——求int型正整数在内存中存储时1的个数
- nowcoder华为机试:求int型正整数在内存中存储时1的个数
- 求int型正整数在内存中存储时1的个数
- 接收RST回应的几种情况
- 组合算法
- 单例模式
- springAOP 实现事务的管理
- Intellij 快捷键
- 求int型正整数在内存中存储时1的个数
- CreateDirectory()用法
- 441. Arranging Coins
- 【死磕Java并发】-----J.U.C之Java并发容器:ConcurrentHashMap
- Prim最小生成树算法
- Java-06-程序逻辑控制
- mybatis中#和$符号的区别
- TUM数据集测评工具的使用
- eclipse 创建maven web项目