我正在将十进制转换为二进制,我的代码适用于正数,但当我尝试转换负数时它会崩溃。当它崩溃我得到错误
Exception in thread "main" java.lang.StackOverflowError
我的代码是从main中的for循环调用的,从-8到+7。 这是转换的代码
public char[] decimalToBinary(int value)
{
int remainder;
char[] result = new char[10];
if (value <= 0)
{
return result;
}
remainder = value %2;
decimalToBinary(value >> 1);
System.out.print(remainder);
return result;
}
这是main中用于调用上述方法的for循环
int min = -8;
int max = +7;
for (int i = min; i <= max; ++i)
{
char[] binaryStr = s.decimalToBinary(i);
}
答案 0 :(得分:1)
以下示例是基于您的逻辑的工作代码:
public static void decimalToBinary(int value) {
int remainder;
if (value == 0) {
return;
}
remainder = value % 2;
decimalToBinary(value >>> 1);
System.out.print(remainder);
}
您应该考虑到负数将使用 2&amp;补码值来表示。
此外,该方法不再返回char
数组,因为它根本没有被使用。