47
第第第第 第第第第第第第第 第第第第第第第第第

第十六章 數字系統與二進碼

Embed Size (px)

DESCRIPTION

第十六章 數字系統與二進碼. 計算機概論編輯小組. 大綱. 數字系統 介紹我們所習慣的十進位數字 資料表示法 介紹一些中英文字以及數字如何存在電腦內部,以方便電腦做資料處理 二進碼 介紹如何利用二進碼編十進位元、葛雷碼、條碼以及浮點表示法. 16.1 數字系統. 數字系統 (Number Systems) 是計算與數之命名的方法。 數元 (digit) 的個數,即決定了何種數字系統。 K 進位數字系統,即以 K 為基底的數字系統,其數元共有 K 個,即 0, 1, 2, ..., K-1 。 十進位數字系統是一套以十為基底的數字系統。. - PowerPoint PPT Presentation

Citation preview

Page 1: 第十六章  數字系統與二進碼

第十六章 數字系統與二進碼

計算機概論編輯小組

Page 2: 第十六章  數字系統與二進碼

計算機概論 p16-2

大綱

數字系統 介紹我們所習慣的十進位數字

資料表示法 介紹一些中英文字以及數字如何存在電腦內部,以方便電腦做資料處理

二進碼 介紹如何利用二進碼編十進位元、葛雷碼、條碼以及浮點表示法

Page 3: 第十六章  數字系統與二進碼

計算機概論 p16-3

16.1 數字系統 數字系統 (Number Systems) 是計算與數之命名的方法。

數元 (digit) 的個數,即決定了何種數字系統。 K 進位數字系統,即以 K 為基底的數字系統,其數元共有 K 個,即 0, 1, 2, ..., K-1 。

十進位數字系統是一套以十為基底的數字系統。

Page 4: 第十六章  數字系統與二進碼

計算機概論 p16-4

在一個 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)

Page 5: 第十六章  數字系統與二進碼

計算機概論 p16-5

以 K 為基底表示正數 N ,可簡化為:

Page 6: 第十六章  數字系統與二進碼

計算機概論 p16-6

Page 7: 第十六章  數字系統與二進碼

計算機概論 p16-7

Page 8: 第十六章  數字系統與二進碼

計算機概論 p16-8

Page 9: 第十六章  數字系統與二進碼

計算機概論 p16-9

Page 10: 第十六章  數字系統與二進碼

計算機概論 p16-10

Page 11: 第十六章  數字系統與二進碼

計算機概論 p16-11

Page 12: 第十六章  數字系統與二進碼

計算機概論 p16-12

Page 13: 第十六章  數字系統與二進碼

計算機概論 p16-13

16.2 資料表示法

電腦的基本功能是做資料處理( data processing ) 資料可以是數字,例如正數、負數、整數、與實數,這些可以計算的資料統稱為數值資料( Numeric Data )。

姓名、住址、電話等或任何文件內的文字(中、英文)、數據等,這種不可計算的資料統稱為文數資料( Alphanumeric Data ),這些資料常用於電腦排版系統,例如:Microsoft Word , LaTEX 等。

Page 14: 第十六章  數字系統與二進碼

計算機概論 p16-14

16.2.1 數值資料( Numeric Data ) 數值有整數與實數之分,並有正、負之別 三種表示數值資料的方式

符號帶大小( Sign-magnitude ) 1 補數 (1’s Complement) 2 補數 (2’s Complement)

假設我們利用 n 位元( n-bit )來表示一個整數,最左邊的那個位元用來表示正負號 等於 “ 0” ,則表示該整數為正數 等於 “ 1” ,則表示該整數為負數。

Page 15: 第十六章  數字系統與二進碼

計算機概論 p16-15

三種方法可以表示的正負數範圍

Page 16: 第十六章  數字系統與二進碼

計算機概論 p16-16

A. 符號帶大小( Sign-Magnitude ) 如果用 n 位元來表示一個整數,

最左邊一位元表示正負號, 其餘 n-1 個位元用來表示該數的大小。 而 n-1 個位元若全為 “ 0” 則是最小的數,為 0 ;若 n-1個位元全為 “ 1” ,則是最大的數,為 。將這個數的大小配上正負號,就可表示一個整數。

缺點: 有兩個 “ 0” (即 +0 與 -0 )的表示法,增加電腦核對一個運算結果是否為 0 的負擔(要核對兩次,是為 +0或 -0 )

不易用邏輯電路製做加減法器。故這種表示法不被電腦採用。

12 1 n

Page 17: 第十六章  數字系統與二進碼

計算機概論 p16-17

B. 1 補數 ( 1’s Complement ) 最左邊的位元視為符號位元 (“1” 表示負數,“ 0” 代表正

數 ) , 其正數的表示法和符號帶大小完全相同, 但當表示負數時,它將某正數的表示法的所有位元,由 “

0” 變成 “ 1” ,而 “ 1” 則變成 “ 0” ,得到的二進位元串,用以表示該正數的相對應負數。 例如用 4 位元表示一個整數, +3 = (0011)2 ,而 -3 則表是成 (110

0)2 。又如 +0=(0000)2 ,而 -0=(1111)2 ,所以 (0000)2 和 (1111)2 都是表示“零”。

缺點: 有兩種“零” 的表示法 算數運算雖可用邏輯電路製做,不過有一點麻煩且較 2 補數沒效率。

所以 1 補數的整數表示法亦不被電腦採用。

12 1 n

Page 18: 第十六章  數字系統與二進碼

計算機概論 p16-18

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 補數的負數表示方式。

12 1 n

Page 19: 第十六章  數字系統與二進碼

計算機概論 p16-19

以 4 位元來表示整數的三種不同表示法

Page 20: 第十六章  數字系統與二進碼

計算機概論 p16-20

補數的進一步闡述

Page 21: 第十六章  數字系統與二進碼

計算機概論 p16-21

16.2.2 數值資料的算術運算 補數運算概念

A,B 若是兩個 K 進位數字,則 A-B 等於 A+(B 的 K 補數 )

補數加的運算 範例: (278)10 + (123)10

Page 22: 第十六章  數字系統與二進碼

計算機概論 p16-22

補數減的運算 範例: (278)10 - (123)10

Page 23: 第十六章  數字系統與二進碼

計算機概論 p16-23

補數乘的運算 範例: (1011)2×(1101)2

Page 24: 第十六章  數字系統與二進碼

計算機概論 p16-24

補數除的運算 範例: (10001111)2÷(1011)2

Page 25: 第十六章  數字系統與二進碼

計算機概論 p16-25

16.2.3 文數資料 (Alphanumeric Data)

文數資料是含文字 (Letter) 、符號 (Symbol) 與數字(Digit) 的資料,所有不可做算數運算的資料皆屬此類。

表示方法 ASCII( 讀作 as-kee) 碼 (America Standard Code for Inform

ation Interchange, 美國標準資訊交換碼 ) IBM , UNIVAC 等某些大型電腦採用的擴充式二進位交換碼 EBCDIC( 讀作 eb-ce-dick) 碼 (Extended Binary Coded Decimal Interchange Code) 。

中文字則大多採用 BIG-5 碼,但也有一些系統採用倚天碼,電信碼及 IBM 5550 碼等。

Page 26: 第十六章  數字系統與二進碼

計算機概論 p16-26

ASCII 碼由七個位元來表示一個字元 (Character) ,因七個位元可有 =128 種組合。 8- 位元的 ASCII 碼,則可有 =256 種不同的組合,詳見表 18.2列出部分 8- 位元的 ASCII 碼。

EBCDIC 碼是由 8 位元來表示一個字元。 EBCDIC 碼將位元分成兩組各 4 個位元,其中一組叫區位元( Zone bits ),另一組叫數元位元( Digit bits )。

區位元用以說明此字元是字母、無正負號的數字、正負符號及一些特殊符號。而數元位元用來表示阿拉伯數字 0~9 。

中文碼用的是另一套表示法,它和 ASCII 碼及 EBCDIC 碼不同。中文碼是以 2 個位元組( 16 個位元)來表示的 。

7282

Page 27: 第十六章  數字系統與二進碼

計算機概論 p16-27

Page 28: 第十六章  數字系統與二進碼

計算機概論 p16-28

Page 29: 第十六章  數字系統與二進碼

計算機概論 p16-29

Page 30: 第十六章  數字系統與二進碼

計算機概論 p16-30

為應付日益增多的字元,例如中文及日文等其它有別於英文的語言,目前國際標準協會正致力於 16 位元的字元碼( Character code ),稱作統一碼( Unicode )以作為世界標準。

Page 31: 第十六章  數字系統與二進碼

計算機概論 p16-31

16.3 二進碼( Binary Codes )

常用的二進碼 以二進碼編十進位數元( Binary Coded Decimal , BC

D )的 BCD 碼、 2421 碼、超 -3 碼( Excess-3 Codes )與 84-2-1 碼

葛雷碼( Gray Codes ) 條碼( Bar Codes 或 Universal Product Codes ) 浮點表示法( Floating-Point Representation )

Page 32: 第十六章  數字系統與二進碼

計算機概論 p16-32

16.3.1 以二進碼編十進位數元 電腦只能接受 0 與 1 ,因此,就有學者發明了以二進碼來表示十進位的0到9這十個數元,並且一切的算術運算都以十進位為基礎來做。

常用方法 BCD 碼 2421 碼超 -3 碼 84-2-1 碼

這些碼都用 4 個位元來表示一個阿拉伯數字( 0 ~ 9 )。

Page 33: 第十六章  數字系統與二進碼

計算機概論 p16-33

A. BCD碼 BCD 碼用四個位元表示一個阿拉伯數字, 4 個位元由左到右,其權重( Weights )都不相同,分別是 8 , 4 , 2 , 1 BCD 碼又被稱為 8421 碼

0 到 9 這十個阿拉伯數字的 BCD 碼

Page 34: 第十六章  數字系統與二進碼

計算機概論 p16-34

Page 35: 第十六章  數字系統與二進碼

計算機概論 p16-35

B. 2421碼 2421 碼也是用 4 位元來表示一個阿拉伯數字。 4 個位元由左到右其權重分別為 2 , 4 , 2 , 1 。 0 到 9 這十個阿拉伯數字的 2421 碼

十進位系統的 9 補數正好等於二進位系統的 1 補數,所有具有這種特性的碼被稱為自補碼( Self-Complementing Code )。

Page 36: 第十六章  數字系統與二進碼

計算機概論 p16-36

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

Page 37: 第十六章  數字系統與二進碼

計算機概論 p16-37

0 到 9 這十個阿拉伯數字的超 -3 碼

超 -3 碼也是一種自補碼

Page 38: 第十六章  數字系統與二進碼

計算機概論 p16-38

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 )

Page 39: 第十六章  數字系統與二進碼

計算機概論 p16-39

0 到 9 這十個阿拉伯數字的 84-2-1 碼

84-2-1 碼也是一個自補碼

Page 40: 第十六章  數字系統與二進碼

計算機概論 p16-40

Page 41: 第十六章  數字系統與二進碼

計算機概論 p16-41

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 ),其編碼方式唯一而且有系統,故廣泛應用在計算機領域。

Page 42: 第十六章  數字系統與二進碼

計算機概論 p16-42

A 、從十進位 → 反射葛雷碼

Page 43: 第十六章  數字系統與二進碼

計算機概論 p16-43

B 、從反射葛雷碼 → 十進位數字

Page 44: 第十六章  數字系統與二進碼

計算機概論 p16-44

16.3.3 條碼 (Bar Code)

條碼 (Bar Codes 或 Universal Product Codes) 在商業用途上非常廣泛 條碼可利用光學儀器很快地掃瞄並認得商品所附之條碼所代表的數

字﹐因而從資料庫獲得這產品的相關資料﹐包括價格﹑品名﹑貨號等等。

條碼利用條狀粗細的不同﹐結合成各種組合以表示阿拉伯數字 0-9 , 特性﹕

(1) 不易塗改。(2) 不受列印品質與大小的影響。(3) 不受方向性不同的影響。

Page 45: 第十六章  數字系統與二進碼

計算機概論 p16-45

16.3.4 浮點表示法

浮點表示法 (floating-point representation)主要用來表示實數資料。 前節所述的正負整數表示法屬於定點表示法﹐小數點固定點在最右

邊那個位元的右下角﹐不論電腦是何型態﹐定點表示法除了位元數之外﹐其餘規定皆同。

浮點表示法則依電腦之型別﹐其位元數與格式的規定均可能有所不同。 以 80486 CPU 之浮點表示法為例 分為單精確度 (Single Precision﹐佔 32 位元 )﹐雙精確度 (Double Pr

ecision﹐佔 64 位元 )﹐以及延伸精確度 (Extended Precision﹐佔 80位元 ) 。

Page 46: 第十六章  數字系統與二進碼

計算機概論 p16-46

一個以浮點表示的二進位數字包含三部分

正 / 負符號﹕ 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) 。

Page 47: 第十六章  數字系統與二進碼

計算機概論 p16-47

範例