【发布时间】:2021-12-07 16:22:06
【问题描述】:
我正在尝试找出一种方法,我可以从用户那里获取输入,并将其显示在 BinRep[] 数组中。目前这个程序只适用于正数,但是我很难找到一种方法让它也适用于负数。有什么想法吗?
int n = atoi(argv[1]);
int binRep[N];
int i;
int flippedNum;
for (i = 0; i < N; i++) {
binRep[i] = 0;
}
i = 0;
while (n > 0) {
binRep[i] = n % 2;
n = n / 2;
i++;
}
for (i = N - 1; i >= 0; i--) {
printf("%d", binRep[i]);
}
printf("\n");
return 0;
}
【问题讨论】:
-
您了解带符号的数字如何用二进制表示 - 即二进制补码吗?一种方法是将正数转换为二进制,然后应用二进制补码来获得负表示。似乎您或编写代码的人可能已经按照未使用的
flippedNum变量所暗示的这些思路进行思考。 -
您是否只是想在二进制中显示与输入为正数相同的数字,但前面有一个
-? -
没有。二进制输出应该是数字的正数。 IE -7 和 7 应该输出相同(二进制为 7)。
-
哦,那听起来你只需要添加
n = abs(n);。别忘了#include <math.h> -
这就是我原本打算做的,但它似乎太简单了。输出是正确的,但我有一种可疑的感觉,由于某种原因它不会通过 GitHub autograder ......无论如何,感谢您的帮助!如果不允许,我想我会回信。
标签: c binary decimal data-conversion