簡體   English   中英

我從十進制轉換為二進制不能處理負數

[英]My conversion from decimal to binary can't deal with negative numbers

我正在將十進制轉換為二進制,並且我的代碼適用於正數,但是當我嘗試轉換負數時會崩潰。 當它崩潰時,我得到了錯誤

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

下面的示例是基於您的邏輯的工作代碼:

public static void decimalToBinary(int value) {
    int remainder;

    if (value == 0) {
        return;
    }

    remainder = value % 2;
    decimalToBinary(value >>> 1);
    System.out.print(remainder);
}

您應考慮到負數將使用其2的補數表示。

同樣,該方法不再返回char數組,因為根本沒有使用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM