Download presentation
Presentation is loading. Please wait.
1
數位資料表示法 2-1 資料型態 2-2 二進位表示法 2-3 各種進位表示法的轉換 2-4 整數表示法 2-5 浮點數表示法
2-6 ASCII及Unicode
2
圖2-1 一到五個位元的各種組合
3
數位資訊的單位 位元(binary digit,簡稱bit)是數位資訊的基本粒子,也是電腦儲存或傳遞資料的最小單位,常用0或1來表示 當初電腦會採用位元表示資料,主要是因為電子元件的穩定狀態有兩種: 電腦常以8個位元為存取單位,因此8個位元稱為 一種是“開”(通常用來表示“1”) 一種是“關” (通常用來表示“0”) 位元組(byte)
4
縮寫單位 全名 精確位元組個數 大約位元組數 範例 KB Kilo Byte 210 = 1,024 一千(103) 這個檔案的大小約238 KB。 MB Mega Byte 220 = 1,048,576 一百萬(106) 本片VCD的容量為650 MB。 GB Giga Byte 230 = 1,073,741,824 十億(109) 本片DVD的容量為4.7 GB。 TB Tera Byte 240 = 1,099,511,627,776 一兆(1012) 這部高容量磁碟可儲存20 TB的資料。
5
圖2-2 不同的資料型態都以位元字串儲存在電腦裡
2-1 資料型態 數 字 資料類型 文 字 影像、圖片 語音、音樂 影片、動畫 圖2-2 不同的資料型態都以位元字串儲存在電腦裡
6
2-2 二進位表示法 一個數字在不同的位置上所表示的數值也就不同,如三位數“523”,右邊的“3”在個位上表示3個一,中間的“2”在十位上就表示2個十,左邊的“5”在百位上則表示5個百,換句話說,523 = 5 × × 以B為基數,則dndn-1…d2d1.r1r2…rm-1rm所表示的數為dn × Bn-1 + dn-1 × Bn-2 + … + d2 × B1 + d1 × B0 + r1 × B-1 + r2 × B-2 + … + rm-1 × B -(m-1) + rm × B-m 二進位表示法:B=2 註:若數值表示成dndn-1…d1d0.r-1r-2…,則次方更一致。
7
表2-1:十六進位的數字符號及其所對應的十進位及二進位
2-3 各種進位表示法的轉換 表2-1:十六進位的數字符號及其所對應的十進位及二進位 十進位 二進位 十六進位 8 1000 1 9 1001 2 10 1010 A 3 11 1011 B 4 100 12 1100 C 5 101 13 1101 D 6 110 14 1110 E 7 111 15 1111 F
8
二進位轉十進位 圖 所對應的十進位數為
9
十進位整數轉二進位 得 圖2-4 十進位181所對應的二進位數為
10
十進位小數轉二進位 得 1101 圖2-5 十進位0.8125所對應的二進位數為
11
十進位0.1的二進位表示法為何? 圖2-6 十進位0.1所對應的二進位數為無窮位數的
12
圖2-7 二進位數換成十六進位數時,每四個位數合成一項
二進位轉十六進位 圖2-7 二進位數換成十六進位數時,每四個位數合成一項 圖 的十六進位表示法為1B5.D816
13
十六進位轉二進位 圖2-9 1B5.D816的二進位表示法為
14
2-4 整數表示法 表2-3: 以8位元所表示的「帶正負符號大小表示法」(sign-and-magnitude representation) [-(27-1)~0~(27-1)] 表2-2: 以8位元所表示的「無正負符號的整數」(unsigned integer) [0~28-1] 位元字串 十進位數 0 1 ... 127 -0 -1 -127 位元字串 十進位數 1 2 ... 254 255
15
「帶正負符號大小表示法」潛在兩個問題 兩個0:+0 (000…000),-0 (100…000) 正數和負數的運算(如加和減)並不直接 目前電腦儲存整數的標準方式是採用「二補數表示法」(two’s complement representation)
16
一補數表示法 (one’s complement representation)
給定一個十進位數值,轉換成它的一補數表示法步驟如下: 步驟1 先忽略其符號,將數字的部分轉成二進位數值。 步驟2 若該二進位數值超過n-1個位元,則為「溢位」(overflow),無法進行轉換;否則在它的左邊補0,直到共有n個位元為止。 步驟3 若所要轉換的數為正數或零,則上步所得數值即為所求;若為負數,則將每個位元做補數轉換,原為0的轉成1;原為1的轉成0。
17
圖2-10 -41的一補數表示法為
18
一補數轉十進位 如果最左邊的位元是0,則表示該數是正數,只要將後面的位元以前面介紹的二進位轉十進位方式求出其數值即可。 如果最左邊的位元是1,則表示該數是負數,先將每個位元做補數轉換,原為0的轉成1;原為1的轉成0。然後將該二進位轉成十進位,再加上一個負號即可。 範例9 給定一補數 ,因為最左邊的位元是1,所以我們先將這補數原為0的轉成1;原為1的轉成0,得 。再將二進位的 轉成十進位的41,然後加上一個負號得-41。
19
二補數表示法 給定一個十進位數值,轉換成它的二補數表示法步驟如下: 先忽略其符號,將數字的部分轉成二進位數值。
步驟1 先忽略其符號,將數字的部分轉成二進位數值。 步驟2 若該二進位數值超過n-1個位元,則為「溢位」(overflow),無法進行轉換;否則在它的左邊補0,直到共有n個位元為止;若所轉換的數為-2n-1,則轉出來的數為1後面有n-1個0,此即為該數的二補數表示法,不應視為溢位。 步驟3 若所要轉換的數為正數或零,則上步所得數值即為所求;若為負數,則最右邊的那些0及最右邊的第一個1保持不變,將其餘的每個位元做補數轉換,原為0的轉成1;原為1的轉成0。
20
40和-40的二補數表示法為何? 範例10 40的二補數表示法為何? 第一步先將40轉成二進位數值101000;第二步在二進位數值左邊補上0,使得 共有8個位元,因為要表示的數為正數,所以 即為所求。 範例11 -40的二補數表示法為何? 第一步先將40轉成二進位數值101000;第二步在二進位數值左邊補上0,使得 共有8個位元;這時所要表示的數為負數,所以最右邊的三個0及第一個1維持不變,其餘的將原為0的轉成1;原為1的轉成0,得 。
21
二補數轉十進位 如果最左邊的位元是0,則表示該數是正數,只要將後面的位元以前面介紹的二進位轉十進位方式求出其數值即可。 如果最左邊的位元是1,則表示該數是負數,保留最右邊的那些0及最右邊的第一個1,將其餘的每個位元做補數轉換,原為0的轉成1;原為1的轉成0。然後將該二進位轉成十進位,再加上一個負號即可。 範例12 給定二補數 ,因為最左邊的位元是1,所以我們先保留最右邊的那三個0及最右邊的第一個1,再將其他的位元原為0的轉成1;原為1的轉成0,得 。再將二進位的 轉成十進位的40,然後加上一個負號得-40。
22
圖2-11 二補數表示法的位元字串與數值之對應 圖2-12 二補數表示法的兩正數相加
23
圖2-13 二補數表示法的一正一負相加,且結果為正
圖2-14 二補數表示法的一正一負相加,且結果為負
24
圖2-16 二補數表示法的兩正數相加結果超過正數儲存範圍
圖2-15 二補數表示法的兩負數相加 圖2-16 二補數表示法的兩正數相加結果超過正數儲存範圍
25
圖2-17 二補數表示法的兩負數相加結果小於負數儲存範圍
圖 的二補數表示法正好是28-40
26
為何二補數可以這樣做運算 假設是n bits 正數 + 正數 (和一般情況一樣)
負數(-x) + 負數(-y) -x在二補數表示值為 2n-x -y在二補數表示值為 2n-y 2n - x + 2n - y = 2n + (2n - (x+y)) 進位 -(x+y)的二補數表示法
27
為何二補數可以這樣做運算(續前頁) 正數 (x) + 負數 (-y) -y在二補數表示值為 2n-y 得 2n+x-y (1) x >= y x-y為正值或0;2n為進位 (2) x <y 2n+x-y = 2n-(y-x) -(y-x)的二補數表示法
28
2-5 浮點數表示法 IEEE 754標準 圖2-19 浮點數表示法的位元欄位功能分配 單倍精準數 1 8 23 符號 指數部分 尾數部分
雙倍精準數 1 11 52 符號 指數部分 尾數部分 圖2-19 浮點數表示法的位元欄位功能分配
29
單倍精準數 1個位元,以0表示正數;以1表示負數。 符號位元 8個位元,以過剩127(Excess 127 – 加上127)方式表示。
指數部分 8個位元,以過剩127(Excess 127 – 加上127)方式表示。 尾數部分 23個位元,從標準化的小數點後開始存起,不夠的位元部分補0。
30
實數10110.100011 的浮點數表示法 實數-0.0010011的浮點數表示法 範例19
給定一實數 ,先轉換成 ×24,因為是正數,所以符號位元為0,其尾數部分為 ,指數部分為4,以過剩127方式儲存,必須先加上127,得131,再將131轉換成二進位,得 。因此 若按IEEE 754標準儲存,為 。 實數 的浮點數表示法 範例20 又是如何儲存呢?先轉換成 ×2-3,因為是負數,所以符號位元為1,其尾數部分為0011,指數部分為-3,以過剩127方式儲存,必須先加上127,得124,再將124轉換成二進位,得 。因此 若按IEEE 754標準儲存,為 。 實數 的浮點數表示法
31
浮點數表示法的數值 範例21 在IEEE 754標準下, 所儲存的數值為多少呢?首先,位元符號為0,所以是正數,指數部分是 ,換成十進位為133,再減去127,得6,因此, 所儲存的數值為 ×26,也就是 。。 範例22 在IEEE 754標準下, 所儲存的數值為多少呢?首先,位元符號為1,所以是負數,指數部分是 ,換成十進位為5,再減去127,得-122,因此, 所儲存的數值為 ×2-122 。
32
請試試下面的例子 (IEEE 754單倍精準數表示法)
1.5 (芃安助教提供的驗算網址)
33
IEEE 754單倍精準數 0的公訂表示法為 也是0(代表-0) 指數部分的-127( )和+128( )做為特殊用途 最小的正數為 其數值為+2-126 最大的正數為 其數值為(2-2-23)×2127
34
2-6 ASCII及Unicode 在電腦裡,所有的文字也存成位元字串,因此我們必須有公訂的對照表,以便我們能在儲存時將文字轉成位元字串,而在解讀時能將位元字串轉回文字 ASCII Big5 Unicode GB EBCDIC
35
表2-4: ASCII符號對照表
37
Unicode What is Unicode?
Unicode provides a unique number for every character, no matter what the platform, no matter what the program, no matter what the language. 萬國碼係啥米碗糕啊? 每個字符在萬國碼中有個唯一的代號 無論在哪種機器上 無論在哪個程式裡 無論用哪種語言
38
Unicode UTF-8 UTF-16 UTF-32 8位元 16位元 32位元 趙(8D99) 坤(5764) 茂(8302)
已發展出多種編碼方式: 分別以: 為基本單元的編碼方式。 UTF-8在全球資訊網最通行,UTF-16為Java及Windows所採用,而UTF-32則為一些Unix系統使用 e.g. 在UTF-16編碼方式中: UTF-8 UTF-16 UTF-32 8位元 16位元 32位元 趙(8D99) 坤(5764) 茂(8302)
39
表2-5:Unicode符號對照表 範 圍 代表的字符群 0000-007F 基本拉丁字符(與ASCII相同) 0080-024F
擴充的拉丁字符 FF 希臘字符 0E00-0E7F 泰文 0E80-0EFF 寮文 FF 數學符號 FF 方塊圖形及幾何圖形 FF 平假名及片假名 4000-9FFF CJK;中文、日文及韓文之漢字
40
Unicode官方網頁
41
從造字程式找
42
從造字程式找(續) 按確定選擇字碼 從視窗欄選參照 在形狀區輸入中 文字
43
Unicode Translation Format
在實際應用上,Unicode並非皆以16位元儲存字元,讀者可參照Wikipedia上的相關條目。 UTF-8(以8位元為基本編碼單元的Unicode Translation Format)vs. UTF-16(以16位元為基本編碼單元的Unicode Translation Format) 在UTF-8的編碼方式中,傳統的ASCII字符仍以一個位元組儲存(位元組首位為0,後面的7位元為原ASCII的編碼)。例如: 在UTF-8的編碼方式中,其餘非ASCII字符,再依類別而有不同長度的編碼方式。例如: 「MadEdit」是一個免費的跨平台編輯軟體,它可檢視各個字符在不同編碼法下的十六進位數值。 「A」的UTF-8為「41」 UTF-16則為「0041」 「趙」的UTF-8為「E8B699 」 UTF-16則為「8D99」
Similar presentations