我从十进制到二进制的转换无法处理负数

时间:2016-02-07 21:00:00

标签: java

我正在将十进制转换为二进制,我的代码适用于正数,但当我尝试转换负数时它会崩溃。当它崩溃我得到错误

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);
   }

1 个答案:

答案 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数组,因为它根本没有被使用。