【发布时间】:2018-07-21 18:14:36
【问题描述】:
该程序适用于 3 位整数。但是当输入一个 4 位整数时它给出了错误的答案。
convertToBinary(123); // returns 1111011 (correct)
convertToBinary(2345); // returns 1313853193 (incorrect)
这是将十进制转换为二进制的函数:
int convertToBinary(int x){
int remainder;
int i=1;
int total=0;
while(x!=0){
remainder = x%2;
x /= 2;
total += remainder*i;
i *= 10;
}
return total;
}
【问题讨论】:
-
我建议您在调试器中逐行执行代码。
-
吹毛求疵:您并没有真正转换为二进制,而是转换为十进制表示仅包含 1 和 0 的数字。例如,
convertToBinary(3)将返回 11 个,而不是 3 个。 -
@molbdnilo 答案是 11。顺便说一句,二进制数只用 1 和 0 表示。
-
@user3834119 仅包含 1 和 0 的数字的十进制(以 10 为底)表示不是二进制的。