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