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--)
我正在寻找一种在每 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--)