c++ - 十进制转二进制C++

标签 c++ binary int decimal

此程序适用于 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/

相关文章:

c++ - 针对错误的 OpenMP 并行

c++ - 迭代器类型的模板

java - int[] 和 Integer[] 数组 - 有什么区别?

java - For 循环,其中两个值独立变化

python - 使用整数的 Numpy 点积非常慢

c++ - 构造函数必须显式初始化没有默认构造函数的成员

c++ - 查询临时对象

Python:将字节转换为二进制并移动其位?

ios - 制作二进制计算器应用程序 (swift)

javascript - javascript中字符串的按位运算