16.1 什麼是 K 進制

先把「你已經會的十進制」拆開來看。3072 這個數字,四個位各自代表什麼?

3072 = 3 \times 10^3 + 0 \times 10^2 + 7 \times 10 + 2

同樣一個數字,寫在不同的位置就代表不同的量——這套規則叫位值系統。從右邊數來第 0 位的位值是 1,第 1 位是 10,第 2 位是 10^2……每往左一位,位值乘 10;而因為「滿 10 就進位」,每一格只需要放 0 \sim 9 這十種數字。整個數的值,就是「每一位的數字 × 它的位值」全部加起來。

圖 16-1:位值系統——同一個數字在不同進制下的長相

一般化:K 進制

把上面那段話裡的 10 全部換成 K,就是 K 進制(base-K)

  • 每一格只放 0 \sim K-1K 種數字,滿 K 就進位。
  • 從右邊數來第 i 位(i0 開始數)的位值是 K^i
  • 整個數的值=每一位的數字 × 位值,加總。

為了區分「這串數字是幾進制」,習慣在括號外標註進制:(1101)_2 是二進制、(3072)_{10} 是十進制。K 超過 10 時,一格可能要放「十幾」這種數字,一個阿拉伯數字寫不下,慣例改用英文字母:A 代表 10、B 代表 11……依序下去。

拿二進制練一次。(11010)_2 是多少?逐位乘上位值:

(11010)_2 = 1 \times 2^4 + 1 \times 2^3 + 0 \times 2^2 + 1 \times 2 + 0 = 16 + 8 + 2 = 26

用二進制數數

滿 2 就進位,意思是每一格只有 01 兩種可能——數到 1 的下一個數就得進位。從 0 數到 10 感受一下:

十進制 二進制 發生了什麼
0 0
1 1 這一格滿了
2 10 進位!
3 11 兩格都滿了
4 100 連環進位
5 101
6 110
7 111 三格全滿
8 1000 又是連環進位
9 1001
10 1010

觀察表格裡的「全滿」時刻:3 = (11)_27 = (111)_2,下一個全滿是 15 = (1111)_2。規律是:n 個二進制位,最多數到 2^n - 1——全部填 1 就是極限,再加 1 就得多開一位。這個規律先放在口袋裡,16.6 會拿它解開一個上冊留下的謎。

至於電腦為什麼用二進制,一句話就講完:電路的一個開關恰好兩種狀態,開=1、關=0——上冊 2.2 說的位元(bit),就是一個二進制位。

動手試試看:在紙上把 (101101)_2 換算成十進制(逐位乘位值再加總,對答案:45);再反過來,把你的出生「日」寫成二進制——用數數表的邏輯往下數,或先拆成 2 的次方相加(例如 25 = 16 + 8 + 1)再填位。