HDU2051 Bitset
2016-07-10 08:15
316 查看
问题链接:HDU2051 Bitset。入门训练题,用C语言编写程序。
这个问题是将输入的整数转换为2进制数。
进制转换问题需要用模除,转换为2进制就模除2。然而,模除是从低位开始取出各个位的,最后的结果还需要逆转一下再输出。
用位运算代替2的模除是一个好主意,除以2也可以用右移1位运算来代替。
AC程序如下:
这个问题是将输入的整数转换为2进制数。
进制转换问题需要用模除,转换为2进制就模除2。然而,模除是从低位开始取出各个位的,最后的结果还需要逆转一下再输出。
用位运算代替2的模除是一个好主意,除以2也可以用右移1位运算来代替。
AC程序如下:
/* HDU2051 Bitset */ #include <stdio.h> int main(void) { int n, count; char bits[64]; // 64位就够了 while(scanf("%d", &n) != EOF) { // 位数计数清零 count = 0; // 进制转换:转为2进制,放在字符数组bits中,因为是从低位开始取出,所以是逆序 while(n) { bits[count++] = (int)(n & 1) + '0'; // n % 2 + '0' n >>= 1; // n = n / 2 } if(count == 0) { // n=0时,需要特殊处理 bits[0] = '0'; count = 1; } // 输出:逆序输出,总共count位 while(count--) printf("%c", bits[count]); printf("\n"); } return 0; }
相关文章推荐
- Android 如何直播RTMP流
- 15、JS回调函数与call函数
- java如何对map进行排序详解(map集合的使用)
- StrPCopy与StrPas功能正好相反,作用是与C语言字符串和Delphi的String相互转化
- C# mouse keyboard monitor
- 【算法-2】判断字符串是否为回纹串
- linq按条件sum
- Comparable的使用
- Docker中部署Kubernetes
- Contiki开发3:调试平台与Debug系统
- JavaScript生态圈现状:初学者地图
- Linux运维经验分享与思路
- 生命与负熵---宇宙的心弦
- (05)String类型的集合映射
- Vue.js——vue-resource全攻略
- 处理classNotfoundExction问题
- Android 核心分析 之八------Android 启动过程详解
- mule-发送json数据到jms queue
- OSGI中自定义command(2)
- 多线程设计模式——Thread Pool(线程池)模式