C 在二进制数之间添加间距

C add spacing in between binary numbers

我正在寻找一种在每 4 位数字后为二进制数添加间距的方法。我的问题是我在 MSB 上多了一个数字,而本不应该有。

我的输出

Enter a number to convert to binary: 1
Enter a number to convert to binary: 8
Enter a number to convert to binary: 0

0 0000 0000 0000 0001
0 0000 0000 0000 1000
0 0000 0000 0000 0000

预期输出:

Enter a number to convert to binary: 1
Enter a number to convert to binary: 8
Enter a number to convert to binary: 0

0000 0000 0000 0001
0000 0000 0000 1000
0000 0000 0000 0000

我的程序:

#include <stdio.h>
#include <stdlib.h>
void convert(int num){
    int bit,i;
    for ( i = 16; i >= 0; i--)
    {
        bit = num>>i;
        if (bit & 1)
            printf("1");
        else
            printf("0");

        if (i && !(i & 3)) // if i is a multiple of 4
            printf(" ");
    }
    printf("\n");
}

for 循环迭代次数过多。它从 i = 16 开始,到 i = -1 结束,因此它循环了 17 次而不是 16 次。

在 15 处初始化 i 会产生预期的结果:

for ( i = 15; i >= 0; i--)