将整数转换为 32 位二进制 - 输出向后
Converting Integer to 32-bit Binary - Output is backwards
我正在编写一个简单的程序来将整数(0 到 2147483647 之间)转换为 32 位二进制。
不幸的是,输出倒退了。
例如,我得到的不是 2 = 10
,而是 2 = 01
。
#include<stdio.h>
int main()
{
int finishFlag = 0; //0 = false, 1 = true
while (finishFlag != 1)
{
int a[36],
n = 0,
i = 0, j = 0;
printf("Enter a number between 0 and 2147483647: ");
scanf("%d", &n);
if (n > 0 && n <= 2147483647)
{
printf("%d expressed as a 32-bit binary number is: ", n);
for (i = 0; i < 36; i++)
{
if (n == 1)
{
a[i] = 1;
break;
}
else
{
a[i] = n % 2;
n = n / 2;
}
}
for (j = 0; j <= i; j++)
{
printf("%d", a[j]);
}
printf("\n");
finishFlag = 1;
}
else
printf("\n** Not a valid input, try again ***\n");
}
return 0;
}
此外,我将如何显示其余的 0(包括每 8 个数字之间的 space)?对于整数“2”
,我需要输出看起来像这样
00000000 00000000 00000000 00000010
您已经单独打印了数字;只需让 j
从 i
开始,然后 down 计数到 0。至于打印 spaces:找出 [=11] 的哪些值=] 你需要一个 space,测试它们,然后才打印一个。
基本转换算法会先产生低位数字,因此您必须反转结果才能以通常的阅读顺序显示它们。
一种方法:
void print_in_base (int value, int base)
{
char digit[MAX_DIGITS];
// compute digits
int rank = 0;
while (value != 0)
{
digit[rank++] = '0' + value % base;
value /= base;
}
// display digits in reverse order
while (rank--) printf ("%c", digit[rank]);
}
现在如果你想每n个字符插入空格,你可以这样做:
void print_in_base (int value, int base, int spacing)
{
char digit[MAX_DIGITS];
int rank = 0;
while (value != 0)
{
digit[rank++] = '0' + value % base;
value /= base;
}
while (rank--)
{
printf ("%c", digit[rank]);
if (rank % spacing == 0 && rank != 0) printf (" ");
}
}
我正在编写一个简单的程序来将整数(0 到 2147483647 之间)转换为 32 位二进制。
不幸的是,输出倒退了。
例如,我得到的不是 2 = 10
,而是 2 = 01
。
#include<stdio.h>
int main()
{
int finishFlag = 0; //0 = false, 1 = true
while (finishFlag != 1)
{
int a[36],
n = 0,
i = 0, j = 0;
printf("Enter a number between 0 and 2147483647: ");
scanf("%d", &n);
if (n > 0 && n <= 2147483647)
{
printf("%d expressed as a 32-bit binary number is: ", n);
for (i = 0; i < 36; i++)
{
if (n == 1)
{
a[i] = 1;
break;
}
else
{
a[i] = n % 2;
n = n / 2;
}
}
for (j = 0; j <= i; j++)
{
printf("%d", a[j]);
}
printf("\n");
finishFlag = 1;
}
else
printf("\n** Not a valid input, try again ***\n");
}
return 0;
}
此外,我将如何显示其余的 0(包括每 8 个数字之间的 space)?对于整数“2”
,我需要输出看起来像这样00000000 00000000 00000000 00000010
您已经单独打印了数字;只需让 j
从 i
开始,然后 down 计数到 0。至于打印 spaces:找出 [=11] 的哪些值=] 你需要一个 space,测试它们,然后才打印一个。
基本转换算法会先产生低位数字,因此您必须反转结果才能以通常的阅读顺序显示它们。
一种方法:
void print_in_base (int value, int base)
{
char digit[MAX_DIGITS];
// compute digits
int rank = 0;
while (value != 0)
{
digit[rank++] = '0' + value % base;
value /= base;
}
// display digits in reverse order
while (rank--) printf ("%c", digit[rank]);
}
现在如果你想每n个字符插入空格,你可以这样做:
void print_in_base (int value, int base, int spacing)
{
char digit[MAX_DIGITS];
int rank = 0;
while (value != 0)
{
digit[rank++] = '0' + value % base;
value /= base;
}
while (rank--)
{
printf ("%c", digit[rank]);
if (rank % spacing == 0 && rank != 0) printf (" ");
}
}