進制轉換是計算機基礎核心技能,也是 Java 面試高頻考點。本文系統整理十進制與二/八/十六進制互轉算法、位權對應表、加法運算演示、Java 中負數補碼表示,並提供代碼速查表。
6 ÷ 2 = 3 余 0 3 ÷ 2 = 1 余 1 1 ÷ 2 = 0 余 1 → 讀餘數從下往上:110
110₂ = 1×2² + 1×2¹ + 0×2⁰ = 4 + 2 + 0 = 6₁₀
位權表: 1 1 0
2² 2¹ 2⁰
二進制: 010 110 10 (補齊: 001 011 010) 八進制: 1 3 2 → 132₈
二進制: 0101 1010 十六進制: 5 A → 5A₁₆ (A=10, B=11, C=12, D=13, E=14, F=15)
101 (5) + 100 (4) ------ 1001 (9) 規則: 0+0=0, 0+1=1, 1+0=1, 1+1=0 進 1
1111 1111 = 255₁₀ (無符號最大值)byte 為有符號:-128 ~ 127Java 整型採用 補碼 表示負數:
+6: 0000 0110 -6: 1111 1001 (取反) + 1 = 1111 1010 驗證: 0000 0110 + 1111 1010 = 1 0000 0000 (溢出丟棄最高位 = 0)
特徵:負數最高位 (符號位) 恆為 1。
// 十進制 → 其他進制字符串
Integer.toBinaryString(6) // "110"
Integer.toOctalString(6) // "6"
Integer.toHexString(6) // "6"
Integer.toString(6, 2) // "110" (指定基數)
// 其他進制字符串 → 十進制 int
Integer.parseInt("110", 2) // 6
Integer.parseInt("6", 8) // 6
Integer.parseInt("5A", 16) // 90
// 格式化輸出
System.out.printf("%d -> 0b%s, 0%o, 0x%X%n", 90,
Integer.toBinaryString(90), 90, 90);
// 90 -> 0b1011010, 0132, 0x5A
掌握「除基取餘、按位權求和、三四位分組」三大核心技法,配合補碼負數表示原理,即可輕鬆應對所有進制轉換問題。Java 提供豐富的 Integer 靜態方法支援互轉,實際開發中優先使用庫方法,面試時需能手寫算法過程。