此程序适用于 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;
}
最佳答案
这是因为你遇到了溢出:234510 是 1001001010012,这超出了你设置的 32 位 int
的限制用于存储总数
。
您可以通过将 unsigned long long
用于您的 total
来稍微改善范围,但是一些更大的数字仍然会触发溢出错误。更好的方法是使用 std::string
作为转换结果。
关于c++ - 十进制转二进制C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25158255/