十进制到二进制的转换c++
Decimal to binary conversion C++
这个程序可以很好地处理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,这超过了用于存储total
的32位int
的限制。
您可以通过对total
使用unsigned long long
来略微提高范围,但是一些较大的数字仍然会触发溢出错误。更好的方法是对转换结果使用std::string
。
我遇到了同样的问题,使用string帮助了它。代码如下:
string Solution::findDigitsInBinary(int A) {
std::string r;
if(A == 0) return "0";
else if(A == 1) return "1";
else
{
while(A!=0) {r=(A%2==0 ?"0":"1")+r; A/=2;}
}
return r;
}
相关文章:
- 防止主数据类型C++的隐式转换
- 模板参数替换失败,并且未完成隐式转换
- 努力将整数转换为链表。不知道我在这里做错了什么
- HEX值到wchar_t字符(UTF-8)的转换
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将 Qvector<uint8_t> 转换为 QString
- 如何在cuSparse中使用cusparseXcoo2csr从coo转换为csc
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 在c++中使用nlohmann从类到json的转换
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 将Integer转换为4字节的unsined字符矢量(按大端字节顺序)
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 如何使用OpenCV将RBG图像转换为HSV,并将H、S和V值保存为C++中的3个独立图像
- 复制列表初始化的隐式转换的等级是多少
- 正在将指针转换为范围
- 如何防止 c++ 在从浮点型转换为双精度型(不适用于 IO)时添加额外的小数?
- 将"打开的CV图像"中的"颜色"转换为整数格式
- 是否可以从int转换为enum类类型
- 了解 GLM- openGL 中的相机转换
- 将无符号char*转换为std::istream*C++