簡體   English   中英

從十進制轉換為二進制 Java 錯誤

[英]Convert from decimal to binary Java error

我正在編寫一個簡單的 Java 程序來將十進制轉換為二進制。

public static int toBinary(int n) {
    int result = 0;

    while (n >= 1) {
        int power = 0;

        while ((int) Math.pow(2, power) <= n) {
            power++;
        }

        result += (int) Math.pow(10, power - 1);
        n = n - (int) Math.pow(2, power - 1);
    }

    return result;
}

該程序適用於 n 直到 1023,但在那之后失敗了,我不確定我在哪里做錯了。 有人可以幫忙嗎?

您的代碼存在Integer Overflow問題。

1024的二進制是10,000,000,000並且int可以容納的最大值是2,147,483,647

使用 int 數組存儲數字:

public static void convertBinary(int num) {
    int[] binary = new int[40];
    int index = 0;
    while (num > 0) {
        binary[index++] = num % 2;
        num /= 2;
    }
    for (int i = index - 1; i >= 0; i--){
        System.out.print(binary[i]);
    }
}

您也可以使用內置方法。

System.out.println(Integer.toBinaryString(1024));

您還可以使用StringBuilder來存儲結果:

public static void convertBinary(int num){
    StringBuilder binary = new StringBuilder();
    while (num > 0){
        binary.append(num % 2);
        num = num / 2;
    }
    System.out.println(binary.reverse());
}

不要在循環中使用String (不可變),始終使用StringBuilder (可變)。

暫無
暫無

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

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