码迷,mamicode.com
首页 > 其他好文 > 详细

HDU2051 Bitset

时间:2016-07-10 08:43:41      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:

问题链接:HDU2051 Bitset入门训练题,用C语言编写程序。

这个问题是将输入的整数转换为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;
}


HDU2051 Bitset

标签:

原文地址:http://blog.csdn.net/tigerisland45/article/details/51828332

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!