首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 十進制轉二進制、八進制、十六進制字串實作

     編輯:Java 相關知識

不使用 Integer.toBinaryString 等內建方法,透過位運算手動實作長整數 (long) 的進制轉換,支援負數處理。

核心邏輯

  • 取絕對值 Math.abs(dec) 進行位運算。
  • 每次取最低有效位 (& 1, & 7, & 15) 拼接字串。
  • 右移對應位數 (>>=1, >>=3, >>=4)。
  • 最後依原正負號加前綴,零值特判回傳 "0"。

完整代碼

十進制 → 二進制

public class DecToBin {
    public static void main(String[] args) {
        long dec = -9223372036854775807L;
        String binStr = "";
        long decAbs = Math.abs(dec);
        while (decAbs > 0) {
            binStr = (decAbs & 1) + binStr;
            decAbs >>= 1;
        }
        binStr = dec < 0 ? "-" + binStr : (dec == 0 ? "0" : binStr);
        System.out.println(binStr);
    }
}

十進制 → 八進制

public class DecToOct {
    public static void main(String[] args) {
        long dec = -0; // 示範負零概念
        String octStr = "";
        long decAbs = Math.abs(dec);
        while (decAbs > 0) {
            octStr = (decAbs & 7) + octStr;
            decAbs >>= 3;
        }
        octStr = dec < 0 ? "-" + octStr : (dec == 0 ? "0" : octStr);
        System.out.println(octStr);
    }
}

十進制 → 十六進制

public class DecToHex {
    public static void main(String[] args) {
        long dec = -1;
        String hexStr = "";
        long decAbs = Math.abs(dec);
        while (decAbs > 0) {
            long lastFour = decAbs & 15;
            hexStr = (lastFour > 9 ? (char)('A' + lastFour - 10) : lastFour) + hexStr;
            decAbs >>= 4;
        }
        hexStr = dec < 0 ? "-" + hexStr : (dec == 0 ? "0" : hexStr);
        System.out.println(hexStr);
    }
}

補充說明

實務上建議直接使用 Long.toString(dec, radix) (radix=2/8/16) 或 Integer.toHexString 等標準庫,效能更好且經過充分測試。本文僅供演算法原理學習參考。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved