这个十进制到二进制转换器有什么问题(没有迭代)

时间:2013-09-21 14:38:41

标签: c base-conversion

我正在尝试制作一个代码,用于在不使用迭代的情况下将小数转换为n< 16的二进制。 但输出总是1000,100,10或1.代码有什么问题? 非常感谢你

#include <stdio.h>

int main(void){
int decimal, bin = 0;
printf("Enter number to convert to base 2: ");
scanf("%d", &decimal);

if(decimal >= 8){
    bin += 1000;
    decimal = decimal%8;
}else if(decimal >= 4){
    bin += 100;
    decimal = decimal%4;
}else if(decimal >= 2){
    bin += 10;
    decimal = decimal%2;
}else if(decimal >= 0){
    bin += decimal%2;
}
printf("%5d", bin);
;
}

1 个答案:

答案 0 :(得分:1)

删除else。测试必须连续应用。如果只有一个当然适用,那么你只能获得2的幂。

当然,将二进制数表示为小数是一个非常糟糕的主意 - 但出于打印目的,它只能起作用。