如何将十进制数打印为32位二进制数,将其分隔为8位

时间:2019-02-08 02:03:11

标签: c binary printf bit unsigned

我正在尝试打印32位二进制整数,其中8位用空格隔开。 ex(00000000 00000000)然后将结果用于将来的测试,我将512作为y进行积分。

  #define CHAR_BITS 8

void displayBits(unsigned int n){


int sup = CHAR_BITS*sizeof(int);
while(sup >= 0)
{
    if(n & (((long int)1) << sup) )
        printf("1");
    else
        printf("0");
    sup--;


}
printf("\n");

return;
}

1 个答案:

答案 0 :(得分:1)

如果您已经有一个工作循环,该循环在每次循环迭代时都输出一个字符,并且i是循环索引,从0开始,则以下条件将每8个字符添加一个空格:

if(i && ((i + 1) % 8 == 0))
{
    putchar(' ');
}

但是,您当前的代码实际上也无法正常产生int的二进制表示形式。用n的值1对其进行测试,并检查其输出。我看到100000000000000000000000000000001