16.1 什麼是 K 進制
先把「你已經會的十進制」拆開來看。3072 這個數字,四個位各自代表什麼?
同樣一個數字,寫在不同的位置就代表不同的量——這套規則叫位值系統。從右邊數來第 0 位的位值是 1,第 1 位是 10,第 2 位是 10^2……每往左一位,位值乘 10;而因為「滿 10 就進位」,每一格只需要放 0 \sim 9 這十種數字。整個數的值,就是「每一位的數字 × 它的位值」全部加起來。
¶一般化:K 進制
把上面那段話裡的 10 全部換成 K,就是 K 進制(base-K):
- 每一格只放 0 \sim K-1 這 K 種數字,滿 K 就進位。
- 從右邊數來第 i 位(i 從 0 開始數)的位值是 K^i。
- 整個數的值=每一位的數字 × 位值,加總。
為了區分「這串數字是幾進制」,習慣在括號外標註進制:(1101)_2 是二進制、(3072)_{10} 是十進制。K 超過 10 時,一格可能要放「十幾」這種數字,一個阿拉伯數字寫不下,慣例改用英文字母:A 代表 10、B 代表 11……依序下去。
拿二進制練一次。(11010)_2 是多少?逐位乘上位值:
¶用二進制數數
滿 2 就進位,意思是每一格只有 0 和 1 兩種可能——數到 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)_2、7 = (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)再填位。