需求:將十進制整數轉換為二進制表示
經典「除二取余」,余數序列從低位到高位,需反向輸出。
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();
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();
}
掌握除基取余 + 反向輸出模式,可輕鬆實現任意進制互轉。