zoukankan      html  css  js  c++  java
  • HDU2051 Bitset

    问题链接: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("
    ");
        }
    
        return 0;
    }


  • 相关阅读:
    hide the navigationBar and tabBar
    js
    CATranstion动画
    CASpringAnimation
    UIImageView动画
    打电话发短信
    页面滑动悬停在某个控件(两种做法)
    导航栏相关设置
    ASCII和16进制
    C++中,申请字符串数组可用new实现
  • 原文地址:https://www.cnblogs.com/tigerisland/p/7564642.html
Copyright © 2011-2022 走看看