现在,我要做的是:

void print_bits(unsigned int x)
{
    int i;
    for(i=WORD_SIZE-1; i>=0; i--) {
        (x & (1 << i)) ? putchar('1') : putchar('0');
    }
    printf("\n");
}

同样,拥有一个与单词大小无关的解决方案(在我的示例中,当前设置为32)将是很棒的。

最佳答案

这个怎么样:

void print2Bits(int a) {
    char* table[] = {
        "00",
        "01",
        "10",
        "11"
    };
    puts(table[a & 3]);
}

void printByte(int a) {
    print2Bits(a >> 6);
    print2Bits(a >> 4);
    print2Bits(a >> 2);
    print2Bits(a);
}

void print32Bits(int a) {
    printByte(a >> 24);
    printByte(a >> 16);
    printByte(a >> 8);
    printByte(a);
}

我认为,这是您编写无循环二进制数的结局。

关于c - 有没有一种方法可以在不使用C语言的循环的情况下打印位?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25709151/

10-11 18:30