【发布时间】:2015-02-23 20:46:51
【问题描述】:
我正在编写一个简单的程序来将整数(0 到 2147483647 之间)转换为 32 位二进制。
不幸的是,输出正在倒退。
例如,我得到的是2 = 01,而不是2 = 10。
#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 个数字之间的空格)?我需要整数'2'的输出看起来像这样
00000000 00000000 00000000 00000010
【问题讨论】:
-
@immibis:我很确定 Goush 知道这一点。
-
@ScottHunter 你会惊讶于有多少人不这样做。
-
@immibis:然而,她/他发布了一个问题,询问如何解决它。知道存在问题和知道如何解决它(或为什么你的代码没有说明你认为它做了什么)之间是有区别的。
标签: c binary integer converter