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

Java 數組進階應用:進制轉換算法與數組拷貝技巧

     編輯:Java 相關知識

6.3.6 十進制轉二進制:除二取余法的數組實現

需求:將十進制整數轉換為二進制表示

算法原理

經典「除二取余」,余數序列從低位到高位,需反向輸出。

代碼實現

int n = 35;
int[] bits = new int[32];  // int 32位足夠
int idx = 0;
while (n != 0) {
    bits[idx++] = n % 2;  // 存儲余數(低位在前)
    n /= 2;               // 去掉已處理位
}
// 反向輸出高位在前
for (int i = idx - 1; i >= 0; i--) 
    System.out.print(bits[i]);
System.out.println();

關鍵點解析

  • 數組長度 32 覆蓋 int 全範圍(含符號位)
  • idx 同時統計有效位數與下標
  • 低位先存、高位後存 → 輸出時反向遍歷
  • 輸出 100011 (35 = 32+2+1)

擴展:通用進制轉換框架

public String toBase(int num, int base) {
    if (num == 0) return "0";
    char[] digits = "0123456789ABCDEF".toCharArray();
    char[] buf = new char[32];
    int idx = 0;
    boolean neg = num < 0;
    if (neg) num = -num;
    while (num != 0) {
        buf[idx++] = digits[num % base];
        num /= base;
    }
    if (neg) buf[idx++] = '-';
    // 反向構建字符串
    StringBuilder sb = new StringBuilder();
    for (int i = idx-1; i >= 0; i--) sb.append(buf[i]);
    return sb.toString();
}

掌握除基取余 + 反向輸出模式,可輕鬆實現任意進制互轉。

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