1、第十六章 數字系統與二進碼計算機概論編輯小組計算機概論p16-2大綱v數字系統4介紹我們所習慣的十進位數字v資料表示法4介紹一些中英文字以及數字如何存在電腦內部,以方便電腦做資料處理v二進碼4介紹如何利用二進碼編十進位元、葛雷碼、條碼以及浮點表示法計算機概論p16-316.1 數字系統v數字系統(Number Systems)是計算與數之命名的方法。v數元(digit)的個數,即決定了何種數字系統。4K 進位數字系統,即以 K 為基底的數字系統,其數元共有 K 個,即0,1,2,.,K-1。4十進位數字系統是一套以十為基底的數字系統。計算機概論p16-4v在一個 K 進位的數字系統中,其基底為
2、 K,則該系統的任何一個正數(不管是整數或實數)都可用一個多項式 N 來表示:4以 K 為基底的數字 N,通常寫成 Nk=(Ap-1Ap-2.A1A0.A-1A-2.A-q)k n最左邊的數元 Ap-1 通常稱為最大有效數元(Most Significant Digit,MSD)n最右邊的數元A-q 則稱為最小有效數元(Least Significant Digit,LSD)計算機概論p16-54以 K 為基底表示正數 N,可簡化為:計算機概論p16-6計算機概論p16-7計算機概論p16-8計算機概論p16-9計算機概論p16-10計算機概論p16-11計算機概論p16-12計算機概論p16
3、-1316.2 資料表示法v電腦的基本功能是做資料處理(data processing)4資料可以是數字,例如正數、負數、整數、與實數,這些可以計算的資料統稱為數值資料(Numeric Data)。4姓名、住址、電話等或任何文件內的文字(中、英文)、數據等,這種不可計算的資料統稱為文數資料(Alphanumeric Data),這些資料常用於電腦排版系統,例如:Microsoft Word,LaTEX等。計算機概論p16-1416.2.1 數值資料(Numeric Data)v數值有整數與實數之分,並有正、負之別v三種表示數值資料的方式4符號帶大小(Sign-magnitude)41補數(1s
4、 Complement)42補數(2s Complement)v假設我們利用n位元(n-bit)來表示一個整數,最左邊的那個位元用來表示正負號4等於“0”,則表示該整數為正數4等於“1”,則表示該整數為負數。計算機概論p16-15v三種方法可以表示的正負數範圍計算機概論p16-16A.符號帶大小(Sign-Magnitude)v如果用n位元來表示一個整數,4最左邊一位元表示正負號,4其餘n-1個位元用來表示該數的大小。4而n-1個位元若全為“0”則是最小的數,為0;若n-1個位元全為“1”,則是最大的數,為 。將這個數的大小配上正負號,就可表示一個整數。v缺點:4有兩個“0”(即+0 與-0)
5、的表示法,增加電腦核對一個運算結果是否為0的負擔(要核對兩次,是為+0或-0)4不易用邏輯電路製做加減法器。故這種表示法不被電腦採用。121n計算機概論p16-17B.1補數(1s Complement)v最左邊的位元視為符號位元(“1”表示負數,“0”代表正數),v其正數的表示法和符號帶大小完全相同,v但當表示負數時,它將某正數的表示法的所有位元,由“0”變成“1”,而“1”則變成“0”,得到的二進位元串,用以表示該正數的相對應負數。4例如用4位元表示一個整數,+3=(0011)2,而-3則表是成(1100)2。又如+0=(0000)2,而-0=(1111)2,所以(0000)2 和(111
6、1)2都是表示“零”。v缺點:4有兩種“零”的表示法4算數運算雖可用邏輯電路製做,不過有一點麻煩且較2補數沒效率。所以1補數的整數表示法亦不被電腦採用。121n計算機概論p16-18C.2補數(2s Complement)v最左邊的位元視為符號位元(“1”表示負數,“0”代表正數),v表示方法4正數的表示法和符號帶大小完全相同,4負數表示法則是利用1補數的負數表示法加“1”達成。例如用4位元表示一個整數,+3=(0011)2,而-3=(1100)2+1=(1101)2,又如+0=(0000)2,而-0=(1111)2+1=(0000)2,所以2補數和上述兩種表示法對0的表示方式是不同的,它永遠
7、只有一種零的表示法,那就是所有的位元皆為“0”。v負數處理步驟(用n位元的2補數)1.我們先將該負數相對應的正數用n位元的符號帶大小方式表示之2.再0變1,1變0,最後再加上1即可。4另一種方法n將正數表示出來後,從右邊掃描到左邊,凡是0就照抄下來,一直碰到第一個“1”仍然照抄,但是從這個“1”以後的左邊每個位元將1改成0,0改成1,也可得到2補數的負數表示方式。121n計算機概論p16-19v以4位元來表示整數的三種不同表示法計算機概論p16-20補數的進一步闡述計算機概論p16-2116.2.2 數值資料的算術運算v補數運算概念4A,B若是兩個K進位數字,則A-B等於A+(B的K補數)4補
8、數加加的運算n範例:(278)10+(123)10 計算機概論p16-224補數減減的運算n範例:(278)10-(123)10 計算機概論p16-234補數乘乘的運算n範例:(1011)2(1101)2 計算機概論p16-244補數除除的運算n範例:(10001111)2(1011)2 計算機概論p16-2516.2.3 文數資料(Alphanumeric Data)v文數資料是含文字(Letter)、符號(Symbol)與數字(Digit)的資料,所有不可做算數運算的資料皆屬此類。v表示方法4ASCII(讀作as-kee)碼(America Standard Code for Inform
9、ation Interchange,美國標準資訊交換碼)4IBM,UNIVAC等某些大型電腦採用的擴充式二進位交換碼EBCDIC(讀作eb-ce-dick)碼(Extended Binary Coded Decimal Interchange Code)。4中文字則大多採用BIG-5碼,但也有一些系統採用倚天碼,電信碼及IBM 5550碼等。計算機概論p16-26vASCII碼由七個位元來表示一個字元(Character),因七個位元可有 =128種組合。48-位元的ASCII碼,則可有 =256種不同的組合,詳見表18.2列出部分8-位元的ASCII碼。vEBCDIC碼是由 8 位元來表示一
10、個字元。4EBCDIC碼將位元分成兩組各 4 個位元,其中一組叫區位元(Zone bits),另一組叫數元位元(Digit bits)。4區位元用以說明此字元是字母、無正負號的數字、正負符號及一些特殊符號。而數元位元用來表示阿拉伯數字 09。v中文碼用的是另一套表示法,它和ASCII碼及EBCDIC碼不同。中文碼是以2個位元組(16個位元)來表示的。7282計算機概論p16-27計算機概論p16-28計算機概論p16-29計算機概論p16-30v為應付日益增多的字元,例如中文及日文等其它有別於英文的語言,目前國際標準協會正致力於 16 位元的字元碼(Character code),稱作統一碼(
11、Unicode)以作為世界標準。計算機概論p16-3116.3 二進碼(Binary Codes)v常用的二進碼4以二進碼編十進位數元(Binary Coded Decimal,BCD)的BCD碼、2421碼、超-3碼(Excess-3 Codes)與84-2-1碼4葛雷碼(Gray Codes)4條碼(Bar Codes 或 Universal Product Codes)4浮點表示法(Floating-Point Representation)計算機概論p16-3216.3.1 以二進碼編十進位數元v電腦只能接受 0 與 1,因此,就有學者發明了以二進碼來表示十進位的到這十個數元,並且一切
12、的算術運算都以十進位為基礎來做。v常用方法4BCD碼42421碼4超-3碼4 84-2-1碼v這些碼都用4個位元來表示一個阿拉伯數字(0 9)。計算機概論p16-33A.BCD碼vBCD碼用四個位元表示一個阿拉伯數字,4個位元由左到右,其權重(Weights)都不相同,分別是8,4,2,14BCD碼又被稱為8421碼v0到9這十個阿拉伯數字的 BCD碼計算機概論p16-34計算機概論p16-35B.2421碼v2421碼也是用4位元來表示一個阿拉伯數字。v4個位元由左到右其權重分別為2,4,2,1。v0到9這十個阿拉伯數字的 2421碼4十進位系統的9補數正好等於二進位系統的1補數,所有具有這
13、種特性的碼被稱為自補碼(Self-Complementing Code)。計算機概論p16-36C.超-3碼(Excess-3 Code)v將阿拉伯數字0到9分別用4位元的二進位系統表示出來,之後每個數字分別再加上3,所得到的4位元二進位碼分別用以表示阿拉伯數字0到9。v範例42 的超-3碼=(0010)2+(0011)2=(0101)245 的超-3碼=(0101)2+(0011)2=(1000)2計算機概論p16-37v0到9這十個阿拉伯數字的超-3碼4超-3碼也是一種自補碼計算機概論p16-38D.84-2-1碼v使用4位元來表示阿拉伯數字0到9,但由左到右其位元的分別為8,4,-2,與
14、-1。v範例43的84-2-1碼為0101,(0+4+0+(-1)=3)45的84-2-1碼為1011,(8+0+(-2)+(-1)=5)計算機概論p16-39v0到9這十個阿拉伯數字的 84-2-1碼484-2-1碼也是一個自補碼計算機概論p16-40計算機概論p16-4116.3.2 葛雷碼(Gray Codes)v葛雷碼的特性4任何連續兩個數字,其對應的二進碼只有一個位元的資料不同,其餘位元資料均相同。4我們可以將任何十進位數字表示成二進位系統,若該二進碼具有上述特性,則稱這種二進碼為葛雷碼(Gray Codes)。4用二個位元來表示整數0,1,2,3,下列兩種編碼方式(即G1和G2)都
15、可以視為2位元的葛雷碼,即G1=0=00,1=01,2=11,3=10或 G2=00=10,1=11,2=01,3=00。n因為葛雷碼並不唯一,故其應用價值將大大降低。v學者研究出一種二進碼,稱為反射葛雷碼(Reflected Gray code),其編碼方式唯一而且有系統,故廣泛應用在計算機領域。計算機概論p16-42vA、從十進位 反射葛雷碼計算機概論p16-43vB、從反射葛雷碼 十進位數字計算機概論p16-4416.3.3 條碼(Bar Code)v條碼(Bar Codes或 Universal Product Codes)在商業用途上非常廣泛4條碼可利用光學儀器很快地掃瞄並認得商品所
16、附之條碼所代表的數字因而從資料庫獲得這產品的相關資料包括價格品名貨號等等。v條碼利用條狀粗細的不同結合成各種組合以表示阿拉伯數字0-9,4特性(1)不易塗改。(2)不受列印品質與大小的影響。(3)不受方向性不同的影響。計算機概論p16-4516.3.4 浮點表示法v浮點表示法(floating-point representation)主要用來表示實數資料。4前節所述的正負整數表示法屬於定點表示法小數點固定點在最右邊那個位元的右下角不論電腦是何型態定點表示法除了位元數之外其餘規定皆同。v浮點表示法則依電腦之型別其位元數與格式的規定均可能有所不同。4以80486 CPU之浮點表示法為例4分為單精
17、確度(Single Precision佔32位元)雙精確度(Double Precision佔64位元)以及延伸精確度(Extended Precision佔80位元)。計算機概論p16-464一個以浮點表示的二進位數字包含三部分n正/負符號b31=0表示此實數為正數b31=1表示此實數為負數。n偏差指數8位元可表示的非負整數值為0255。實數可由很小至很大故需要正負二種指數因此以127為指數偏差值實際的指數值=偏差指數-127。偏差指數的範圍為127 255則代表真正指數值為0 128 偏差指數介於126 0之間則代表真正指數值介於-1 -127之間 偏差指數是132其真正指數則為5偏差指數是120其真正指數即是-7。n小數部分此處的小數部分是經過正規化(normalization)後的小數。由於它有23位元所以可準確到小數點後23位(2-23)。計算機概論p16-47v範例