这就是我所拥有的:
string decimal_to_binary(int n){
string result = "";
while(n > 0){
result = string(1, (char) (n%2 + 48)) + result;
n = n/2;
}
return result; }
这样可行,但如果我输入一个负数,任何帮助它都不起作用?
答案 0 :(得分:2)
只需
b
然后使用 bitset 和 to_string 将int转换为字符串
#include <bitset>
它也适用于负数。
答案 1 :(得分:1)
我会建议为负数调用一个单独的函数。鉴于此,例如,-1和255都将返回11111111.从正数转换为负数将是最简单的,而不是完全改变逻辑来处理两者。
从正二进制到负数只是运行XOR并加1。
您可以像这样修改代码以便快速修复。
string decimal_to_binary(int n){
if (n<0){ // check if negative and alter the number
n = 256 + n;
}
string result = "";
while(n > 0){
result = string(1, (char) (n%2 + 48)) + result;
n = n/2;
}
return result;
}
答案 2 :(得分:0)
这样可行,但如果我输入一个负数,任何帮助它都不起作用?
检查数字是否为负数。如果是,请使用-n
再次调用该函数并返回连接结果。
除非要在输入为0时返回空字符串,否则还需要添加一个子句来检查0。
std::string decimal_to_binary(int n){
if ( n < 0 )
{
return std::string("-") + decimal_to_binary(-n);
}
if ( n == 0 )
{
return std::string("0");
}
std::string result = "";
while(n > 0){
result = std::string(1, (char) (n%2 + 48)) + result;
n = n/2;
}
return result;
}