2014年8月7日 星期四

數字系統轉換: 10進位篇

在了解數字系統之前,先了解何謂數字。一個數字通常由很多數元組成,正確的講,是從左到右依序寫在高到低位置上的多個數元組成。至於數字有那些數元可用則和數字是幾進位的數字有關,例如常用10進位數字有0~910個數元可用,16進位數字有0~9A-F16個數元可用,2進位數字則只有0,1兩個數元可用。其規則為b進位數字將有0~b-1b個數元可用。習慣上,將所有b進位數字形成的集合稱為b進位數字系統基數b數字系統,記作()b。一般數字若不作()b標記,預設為10進位數字
 
由於每個數字皆可用不同基數的數字系統表示,如何讓數字在不同數字系統之間轉換遂成為一個困擾。以下將先介紹次方法公式,適用於b進位轉10進位情況。
(an-1…a2a1a0)b= an-1bn-1 + … + a2b2 + a1b1 + a0b0
其中,(an-1…a2a1a0)b表示某b進位數字,包含n個數元,數元由高到低位置分別為an-1a0
1: 此公式之正確性可由10進位數字皆可依如下公式還原,而得到驗證。
(4567)10 = 4103 + 5102 + 6101 + 7100 = 4000 + 500 + 60 + 7 = 4567
2: 如下8進位數字為何10進位數字
(4567)8 = (?)10
 = 483 + 582 + 681 + 780 = 4512 + 564 + 68 + 71= 2423 = (2423) 10
3: 如下16進位數字為何10進位數字
(4567)16 = (?)10
= 4163 + 5162 + 6161 + 7160 = 44096 + 5256 + 616 + 71
= 17767 = (17767) 10
4: 如下2進位數字為何10進位數字
(1011)2 = (?)10
= 123 + 022 + 121 + 120 = 18 + 04+ 12 + 11 = 11 = (11)10
 
接下來介紹長除法公式,適用於10進位轉b進位之反方向情況。假設10進位數字x想轉為b進位數字(an-1…a2a1a0)b,則各數元a計算法如下。
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想成4103 + 5102 + 6101 + 7100=(((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
 
以上介紹了b10的次方法及10b的長除法後,理論上任何兩數字系統皆可經由10進位數字系統而作轉換。例如:816可先810,再1016即得。
 
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

沒有留言: