【发布时间】:2019-07-15 02:21:00
【问题描述】:
到目前为止我有这个代码:
for ( int i = 16; i >=0; i--){
int k = n >> i;
if (k & 1)
printf("1");
else
printf("0");
}
我对 C 语言非常陌生,我正在为一个类研究十进制到二进制转换器。到目前为止,这是我发现的在我的参数范围内有效的方法。唯一的问题是我需要此代码仅将二进制文件输出到给定的 MSD。
如果我有十进制 15,它应该以二进制显示 1111,如果我有十进制 16,它应该只显示下一组 4,所以 00010000。
到目前为止,我可以将数量设置为我想要的任何值,如 i = 16,但这将显示总共 15 个空格。好像我输入了一个小数,我不希望我的程序显示所有多余的不必要的 0。
那么有没有办法限制二进制输出与准确显示其转换所需的最重要的空间相对应?
【问题讨论】:
-
欢迎来到 Stack Overflow。请阅读the help pages,取the SO tour,阅读有关how to ask good questions,以及this question checklist。
-
至于解决问题的可能方法(据我了解),您可以找到最高的非零 nibble 并从那里开始打印。
-
减一,为什么是16?您正在使用 17 位数字?
-
我在 0 到 65537 之间的数字范围内工作。我刚刚设置了 'i = 15' 以从最大数字中获取最小位。
-
这是一个非常奇怪的范围。 16 位无符号整数从
0到65535(含)。
标签: c binary decimal converters