在了解數字系統之前,先了解何謂數字。一個數字通常由很多數元組成,正確的講,是從左到右依序寫在高到低位置上的多個數元組成。至於數字有那些數元可用則和數字是幾進位的數字有關,例如常用10進位數字有0~9共10個數元可用,16進位數字有0~9A-F共16個數元可用,2進位數字則只有0,1兩個數元可用。其規則為b進位數字將有0~b-1共b個數元可用。習慣上,將所有b進位數字形成的集合稱為b進位數字系統或基數b數字系統,記作()b。一般數字若不作()b標記,預設為10進位數字。
由於每個數字皆可用不同基數的數字系統表示,如何讓數字在不同數字系統之間轉換遂成為一個困擾。以下將先介紹次方法公式,適用於b進位轉10進位情況。
(an-1…a2a1a0)b= an-1⋅bn-1 + … + a2⋅b2 + a1⋅b1 + a0⋅b0
其中,(an-1…a2a1a0)b表示某b進位數字,包含n個數元,數元由高到低位置分別為an-1到a0。
例1: 此公式之正確性可由10進位數字皆可依如下公式還原,而得到驗證。
(4567)10 = 4⋅103 + 5⋅102 + 6⋅101 + 7⋅100 = 4000 + 500 + 60 + 7 = 4567
例2: 如下8進位數字為何10進位數字
(4567)8 = (?)10
= 4⋅83 + 5⋅82 + 6⋅81 + 7⋅80 = 4⋅512 + 5⋅64 + 6⋅8 + 7⋅1= 2423 = (2423) 10
例3: 如下16進位數字為何10進位數字
(4567)16 = (?)10
= 4⋅163 + 5⋅162 + 6⋅161 + 7⋅160 = 4⋅4096 + 5⋅256 + 6⋅16 + 7⋅1
= 17767 = (17767) 10
例4: 如下2進位數字為何10進位數字
(1011)2 = (?)10
= 1⋅23 + 0⋅22 + 1⋅21 + 1⋅20 = 1⋅8 + 0⋅4+ 1⋅2 + 1⋅1 = 11 = (11)10
接下來介紹長除法公式,適用於10進位轉b進位之反方向情況。假設10進位數字x想轉為b進位數字(an-1…a2a1a0)b,則各數元ai計算法如下。
x ÷ b = x0 = (an-1…a2a1)b … a0
x0 ÷ b = x1= (an-1…a2)b … a1
…
xn-2 ÷ b = xn-1= 0 … an-1
其中,先求得餘數放在低數元,後求得餘數放在高數元,直到商變0為止。
例4: 同樣此公式之正確性可由10進位數字皆可依如下公式還原,而得到驗證。
4567 ÷ 10 = 456 … 7
456 ÷ 10 = 45 … 6
45 ÷ 10 = 4 … 5
4 ÷ 10 = 0 … 4
故得4567 = (4567)10
其實若將4567想成4⋅103 + 5⋅102 + 6⋅101 + 7⋅100=(((0+4)⋅10+5)⋅10+6)⋅10+7就可理解為何長除法求得餘數要先放低數元位置,再逐一放到高數元位置原因。
例2: 如下10進位數字為何8進位數字
(2423)10 = (?)8
2423 ÷ 8 = 302 … 7
302 ÷ 8 = 37 … 6
37 ÷ 8 = 4 … 5
4 ÷ 8 = 0 … 4
故得(2423)10 = (4567)8
例3: 如下10進位數字為何16進位數字
(17767)10 = (?)16
17767 ÷ 16 = 1110 … 7
1110 ÷ 16 = 69 … 6
69 ÷ 16 = 4 … 5
4 ÷ 16 = 0 … 4
故得(17767)10 = (4567)16
例4: 如下10進位數字為何2進位數字
(11)10 = (?)2
11 ÷ 2 = 5 … 1
5 ÷ 2 = 2 … 1
2 ÷ 2 = 1 … 0
1 ÷ 2 = 0 … 1
故得(11)10 = (1011)2
以上介紹了b轉10的次方法及10轉b的長除法後,理論上任何兩數字系統皆可經由10進位數字系統而作轉換。例如:8轉16可先8轉10,再10轉16即得。
PS:中英對照
數字 number
數元 radix
數字系統 number system
基數 base
商 quotient
餘數 remainder
高數元位置 more significant radix position
低數元位置 less significant radix position
2進位 binary
8進位 octal
10進位 decimal
16進位 hexadecimal
n進位 base n
長除法 long division method
次方法 power method
沒有留言:
張貼留言