Top Banner
1 第 3 第 第第第第第第第第
48

第 3 章 資料和程式表示法

Jan 03, 2016

Download

Documents

allistair-bates

第 3 章 資料和程式表示法. 數位邏輯. 硬體工程師使用邏輯閘設計電腦 數位輸入或輸出有兩種可能的狀態: 5V 和 0V high 和 low true 和 false. 資料表示法. 依照階層概念,資料表示法架構 於數位邏輯之上。 集合多個布林位元成為 數字 字元 位址. 位元( Bit ). 數位邏輯數值的直接表示方式 描述數位的兩個可能值: 0 和 1 多個位元可以代表更複雜的資料. 位元組( Byte ). k 位元所組成的位元組 K 值並沒有任何的強制規定 位元組範例: - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 第  3  章 資料和程式表示法

1

第 3 章資料和程式表示法

Page 2: 第  3  章 資料和程式表示法

2

數位邏輯

• 硬體工程師使用邏輯閘設計電腦• 數位輸入或輸出有兩種可能的狀態:

– 5V 和 0V

– high 和 low

– true 和 false

Page 3: 第  3  章 資料和程式表示法

3

資料表示法

• 依照階層概念,資料表示法架構 於數位邏輯之上。

• 集合多個布林位元成為– 數字– 字元– 位址

Page 4: 第  3  章 資料和程式表示法

4

位元( Bit )

• 數位邏輯數值的直接表示方式• 描述數位的兩個可能值: 0 和 1

• 多個位元可以代表更複雜的資料

Page 5: 第  3  章 資料和程式表示法

5

位元組( Byte )

• k 位元所組成的位元組• K 值並沒有任何的強制規定• 位元組範例:

– CDC 使用 6 位元的位元組– BBN 使用 10 位元的位元組– IBM 使用 10 位元的位元組

• 現代電腦使用 8 位元的位元組

Page 6: 第  3  章 資料和程式表示法

6

位元組大小和數值

• 許多電腦使用位元組位址當作最小的記憶體單位。

• 6 位元可以代表 64 個數值• 8 位元可以代表 256 個數值

Page 7: 第  3  章 資料和程式表示法

7

二進位表示法

Page 8: 第  3  章 資料和程式表示法

8

位元意義

• 位元本身並沒有任何意義• 相關的位元意義通常是由其

硬體和軟體來加以詮釋

Page 9: 第  3  章 資料和程式表示法

9

直譯範例

• 比如:可以使用三個位元,來代表三個電腦周邊設備的狀態,如下:– 如果第一位元為 1 ,表示磁碟已經連線。– 如果第二位元為 1 ,表示印表機已經連線。– 如果第三位元為 1 ,表示鍵盤已經連線。

Page 10: 第  3  章 資料和程式表示法

10

數值

• 最常使用的階層概念,就是把位元組合後,當作數值。

• 比如:二進位整數 • 使用前後順序的位置關係,來代表基底的冪次高低 。

Page 11: 第  3  章 資料和程式表示法

11

位置冪次的轉譯

• 考慮下列的二進位範例:010101

• 根據位置冪次觀念,數值應解譯成:0×25+1×24+0×23+1×22+0×21+1×20=21

Page 12: 第  3  章 資料和程式表示法

12

數值範圍

• 一組 k 位元的組合可以用來代表整數,使用傳統的位置冪次觀念, k 位元數值可以代表 0 到 2k-1。

Page 13: 第  3  章 資料和程式表示法

13

十六進位觀念

• 為了幫助人們表示二進位數值 ,可以使用 16 進位數值 。

• 每四個二進制位元編成單一的 16進位之位數(代表 0 ~ 15 ) 。

Page 14: 第  3  章 資料和程式表示法

14

十六進位之位數

Page 15: 第  3  章 資料和程式表示法

15

十六進位常數

• 某些程式語言喜歡使用十六進位• 典型語法:常數開頭加上 0x( 零 x)

• 比如:0xDEC90949

Page 16: 第  3  章 資料和程式表示法

16

字元集

• 每一種電腦系統都必須定義自己的字元集。

• 字元集包含英文大寫、英文小寫、數字、標點符號、和特殊符號等。

• 每一個字元必須使用一個唯一的位元組,來加以代表。

Page 17: 第  3  章 資料和程式表示法

17

字元編碼範例

• EBCDIC

• ASCII

• Unicode

Page 18: 第  3  章 資料和程式表示法

18

EBCDIC

• 全名 Extended Binary Coded Decimal Interchange Code

• 1960 年代最普遍的編碼方法• IBM 公司定義的字元集• 目前仍然使用於 IBM 大型主機上• 6 位元的字元集

Page 19: 第  3  章 資料和程式表示法

19

ASCII

• 全名 American Standard Code for Information Interchange – ANSI 協會定義的字元集– 非電腦廠商定義的字元集

• ASCII 碼制訂 128 個字元 – 比如,英文字母 a 表示法為 01100001(二進制)

Page 20: 第  3  章 資料和程式表示法

20

ASCII 字元集

Page 21: 第  3  章 資料和程式表示法

21

Unicode

• Unicode 設計成 16 位元字元集 • 這個字元集不但延伸 ASCII 字元集,也可以容納更多的字元。

• 適用於所有的語言 ,比如:中文。

Page 22: 第  3  章 資料和程式表示法

22

數端

• 位元數端• 位元組數端

Page 23: 第  3  章 資料和程式表示法

23

位元數端

數端的討論對於彼此之間的資料轉移相當重要,舉例而言,想要在網路上傳送一個位元組時,雙方都必須同意這個位元組是先從最大位元傳送,還是先傳送最小位元!這種位元的排列順序稱為位元數端。

Page 24: 第  3  章 資料和程式表示法

24

位元組數端

同樣把數端主題延伸到多個位元組時,也有一樣的問題,比如:傳送 32 位元的整數,如果電腦的位元組是 8 位元,則整數會被分成 4 位元組,現在到底要先傳送最大的位元組、或先傳最小的位元組!這種位元組的排列順序稱為位元組數端。

Page 25: 第  3  章 資料和程式表示法

25

大端 與 小端

Page 26: 第  3  章 資料和程式表示法

26

二進位整數表示法

• 使用位置冪次表示法的二進位數值 • K 位元的組合可以代表 2k個數值• 電腦習慣使用的 k = 8,16,32 和 64

• 位置冪次表示法產生無號整數

Page 27: 第  3  章 資料和程式表示法

27

無號整數

• 最直接的位置冪次表示法• 無號整數

– 每個位數都是 2 的冪次乘積。 – 全部是正整數,無法表示負數。 –算術運算後可能產生溢位和欠位。– 可能有循環觀念。

Page 28: 第  3  章 資料和程式表示法

28

溢位

• 溢位狀態指示:結果是否超過 k 位元範圍!• 溢出的第 k+1 位元就是一般所謂的進位

Page 29: 第  3  章 資料和程式表示法

29

有號整數

• 大部分的程式需要有號整數• 有多種表示法• 大約有一半的數值,用來表示負數。

Page 30: 第  3  章 資料和程式表示法

30

有號整數表示法

• 符號位元 • 1’s補數• 2’s補數• 注意:以上每種表示法都有各自的優缺點

Page 31: 第  3  章 資料和程式表示法

31

符號位元表示法

• 可能會出現兩個零值:–正零–負零

• 正零和負零都是零• 儘管不會影響任何的數學觀念,但零值是電腦最常使用的數值,兩個零值恐怕會增加複雜度。

Page 32: 第  3  章 資料和程式表示法

32

1’s 補數表示法

• 比如: 4 位元的 1’s補數表示法– 0010 代表 2– 1101 代表 -2

• 1’s補數也有兩個零值:– 所有位元為 0– 所有位元為 1

• 依然存在兩個零值的問題。

Page 33: 第  3  章 資料和程式表示法

33

2’s 補數表示法

• 比如: 4 位元的 2’s補數表示法– 0010 代表 2– 1110 代表 -2

• 正數和負數的數量並不對稱–負數比正數多一個數值

Page 34: 第  3  章 資料和程式表示法

34

無號 / 有號整數之代表意義不同

Page 35: 第  3  章 資料和程式表示法

35

無號 / 有號整數的硬體需求

• 不管無號整數或 2’s補數表示法,電腦都使用相同的硬體。

• 執行軟體進行整數算術,只要選擇適合的整數表示法,即可。

• 比如: 1001+ 1= 1010– 如果當作 無號整數,則解釋為”把 9加 1得到 10” 。

– 如果當作 2’s補數法,則解釋為”把 -7加 1得到 6” 。

Page 36: 第  3  章 資料和程式表示法

36

符號延伸

• 大部分電腦會提供多重位元的能力– 比如: 16 位元、 32 位元、和 64 位元等數值處理能力。

–允許程式設計師自由選擇其中一種。• 問題在於:如何把較少位元數的整數,改成較多位元數的整數呢?

Page 37: 第  3  章 資料和程式表示法

37

符號延伸的意義

• 就是延伸最高的符號位元• 比如:如何把某個 16 位元數值改成 32位元數值呢?– 對齊最小位元,填入低階的 16 位元資料。– 延伸其符號位元,填入高階的 16 位元。

• 若是正數 ( 符號位元 0) ,高階 16 位元都填入0 。

• 若是負數 ( 符號位元 1) ,高階 16 位元都填入1 。

Page 38: 第  3  章 資料和程式表示法

38

符號延伸後的數值大小

在 2’s補數法中,一個 k 位元的整數 Q要延伸超過 k 位元的數值,必須先對齊低階 k 位元,超過的較高階位元全數填入 Q 的最高位元(符號位元),這種符號延伸動作並不會影響到原數值的大小。

Page 39: 第  3  章 資料和程式表示法

39

符號延伸範例

• 8 位元有號整數11111101 ( -3 )

• 符號延伸成 16 位元有號整數11111111 11111101 ( -3 )

• 數值大小仍然不變

Page 40: 第  3  章 資料和程式表示法

40

科學記號

• 化學知名的亞佛加厥數之科學記號為 6.022×1023 。– 其中 6.022 為有效數– 而 23則為指數

Page 41: 第  3  章 資料和程式表示法

41

浮點數

• 電腦的浮點數源於一般的科學記號• 但仍有差異• 電腦浮點數的基底採用二進位,有些位元表示有效數,有些表示指數。

Page 42: 第  3  章 資料和程式表示法

42

最佳化浮點數格式

• 數值必須正規化• 由於最前頭的位元總是為 1 ,因此可以省略不寫。

• 指數必須能夠表示負值

Page 43: 第  3  章 資料和程式表示法

43

IEEE 754 標準浮點數表示法• 分成兩種:單精準度和雙精準度。• 單精準度有 32 位元• 雙精準度有 64 位元

Page 44: 第  3  章 資料和程式表示法

44

特殊浮點數

• 零值– 所有位元為 0

• +∞ (正無限大)–指數全為 1 ,有效數全為 0 , S欄位 =0 。

• -∞ (負無限大)–指數全為 1 ,有效數全為 0 , S欄位 =1 。

Page 45: 第  3  章 資料和程式表示法

45

IEEE 754 浮點數範圍

• 單精準度範圍約為 2-126~2127

• 改以十進位基底來看– 單精準度範圍約為 10-38~1038 – 雙精準度範圍約為 10-308~10308

Page 46: 第  3  章 資料和程式表示法

46

聚合資料

• 連續的位元組位址• 比如:儲存 3 個 16 位元的聚合資料,會佔據連續 6 個位元組的位址。

Page 47: 第  3  章 資料和程式表示法

47

結論 • 底層的數位硬體有兩個可能的輸出值,稱為位元。

• 集合某些位元用來代表– 整數– 字元 –浮點數

• 整數可以使用下列表示法– 符號位元– 1’s補數– 2’s補數

Page 48: 第  3  章 資料和程式表示法

48

結論( cont. )

• 無號整數和 2’s補數的算術,使用相同的電腦硬體。

• 數端分成– 大端順序– 小端順序

• ANSI 和 IEEE 組織定義標準的資料表示法