输入的数转化为二进制序列,并统计序列中1的个数
2015-09-28 20:58
417 查看
★输入的数转化为二进制序列,并统计序列中1的个数 描述:普通的模除取余后数直接除二的办法易于理解,但是对于输入的数只限于正数和零,对于负数则不适应,所以采用与后移位的方法以此来扩大数的输入范围。 #include<stdio.h> int main() { int m,b,c,i; int count = 0; char a[32]; printf("请输入一个数:\n"); scanf("%d", &m); for (i = 0; i < 32; i++) { if (m & 1 == 1) { count++; } c = m & 1; //与0001相与,同1反0,取得余数,相当于模除(%)的效果 b = m >> 1; //序列整体向右移一位,相当于(/2)的效果 m = b; a[i] = c; } printf("该数的二进制序列为:\n"); for (i = 31; i >= 0; i--) printf("%d", a[i]); printf("\n"); printf("该序列中1的个数为:\n"); printf("count=%d", count); printf("\n"); return 0; }
相关文章推荐
- 关于最大匹配,最小点覆盖,最少路径覆盖和最大独立集的总结
- 计算器程序
- kafka0.8.2.1常用命令
- TeaScoreFrame
- CYC- IOS 常用的一些小东西
- 第八章 网络配置管理
- docker与Hadoop
- Linux伙伴系统算法--防止内存碎片的产生
- 将一个字符串插入到另一个字符串的某个位置
- iOS界面编程-UIImageView
- 构造和析构函数对比
- 部署完openstack后的网络配置(二)
- 一篇不错的hadoop介绍文章
- openstack 和 Hadoop
- druid StatViewServlet配置 内置web页面
- Android 应用程序退出后不在运行列表中显示的方法
- BZOJ 2741【FOTILE模拟赛】L 分块+可持久化trie
- 服务器开发日常9-28-2015
- SysManagerServiceImpl
- 606第三周周三赛 E - Andrey and Problem