第2章 數位資料表示法 2-1 資料型態 2-2 二進位表示法 2-3 各種進位表示法的轉換 2-4 整數表示法 2-5 浮點數表示法 2-6 ASCII及Unicode
0與1的組合
數位資訊的單位 位元(binary digit,簡稱bit)是數位資訊的基本粒子,也是電腦儲存或傳遞資料的最小單位,常用0或1來表示 當初電腦會採用位元表示資料,主要是因為電子元件的穩定狀態有兩種:一種是“開”(通常用來表示“1”)及一種是“關” (通常用來表示“0”) 電腦常以8個位元為存取單位,因此8個位元稱為位元組(byte)
數位資訊的單位(續)
2-1 資料型態
2-2 二進位表示法 一個數字在不同的位置上所表示的數值也就不同,如三位數“523”,右邊的“3”在個位上表示3個一,中間的“2”在十位上就表示2個十,左邊的“5”在百位上則表示5個百,換句話說,523 = 5 x 102 + 2 x 101 + 3 以B為基數,則dndn-1…d2d1.r1r2…rm-1rm所表示的數為dn x Bn-1 + dn-1 x Bn-2 + … + d2 x B1 + d1 x B0 + r1 x B-1 + r2 x B-2 + … + rm-1 x B-(m-1) + rm x B-m 二進位表示法:B=2
二進位、十進位、十六進位
一個小小的問題 Oct-這個字根代表8; Dec-這個字根代表10 為什麼October 不是八月而是十月? 為什麼 December不是十月而是十二月?
因為插入了七月和八月 July源於凱撒(Julius Caesar) 之名,凱撒原是一位有名的羅馬將領,後來當了羅馬皇帝。在這之前就有曆法,那時是以March 為一年的開端,而July是第十五個月;到了凱撒當皇帝便修改曆法,將一年的開始訂為January,而將July 提升到第七位,這個改變一直沿用至今。 凱撒大帝之後,他的兒子奧古斯都(Augustus)繼承王位,人們尊稱他為Augustus,其意義乃代表高貴 (Noble),於是他學凱撒將他的幸運月,以自己的封號命名。 那二月為什麼只有二十八天呢?
二月被砍過兩天 二月為什麼通常只有二十八天? 凱撒(Julius Caesar) 修改曆法時,本來規定每年十二個月裡,逢單是大月三十一日,逢雙是小月三十日,但是這樣算下來,一年就變成三百六十六日,所以必須設法在一年中扣去一天。那時候判處死刑的人犯均在二月分執行,因此人們認為二月是不吉利的月分,既然要扣除一天,那麼就由二月分來扣掉,讓不吉利的日子減少一天,因此二月分就成了二十九日。 後來奧古斯都(Augustus)繼凱撒之後當了羅馬皇帝,他發現凱撒是七月生的,而七月是逢單為大月三十一日;他不服氣,為了表示自己也偉大,就把自己八月出生的月分改為大月三十一日。糟了!又多出一天怎麼辦?那還是由二月分來扣除,因此結果二月分就變成二十八日。
2-3 各種進位表示法的轉換 二進位轉十進位 10110101.11012所對應的十進位數為181.8125
十進位整數轉二進位 十進位181所對應的二進位數為101101012
十進位小數轉二進位 十進位0.8125所對應的二進位數為0.11012
十進位0.1的二進位表示法為何? 十進位0.1所對應的二進位數為無窮位數的0.000110011…2
二進位轉十六進位 二進位數換成十六進位數時,每四個位數合成一項
二進位轉十六進位 110110101.110112的十六進位表示法為1B5.D816
十六進位轉二進位
2-4 整數表示法
帶正負符號大小表示法
一補數表示法 給定一個十進位數值,轉換成它的一補數表示法步驟如下:
-41的一補數表示法為11010110
一補數轉十進位
二補數表示法 給定一個十進位數值,轉換成它的二補數表示法步驟如下:
40和-40的二補數表示法為何?
二補數轉十進位
二補數表式法位元字串與數值的對應關係
二補數表示法的兩正數相加
二補數表示法的一正一負相加,且結果為正
二補數表示法的一正一負相加,且結果為負
二補數表示法的兩負數相加
二補數表示法的兩正數相加 結果超過正數儲存範圍
二補數表示法的兩負數相加 結果小於負數儲存範圍
-40的二補數表示法正好是28-40
為何二補數可以這樣做運算 假設是n bits 正數 + 正數 (和一般情況一樣) 負數(-x) + 負數(-y) -x在二補數表示值為 2n-x -y在二補數表示值為 2n-y 2n - x + 2n - y = 2n + (2n - (x+y)) 進位 -(x+y)的二補數表示法
為何二補數可以這樣做運算(續前頁) 正數 (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)的二補數表示法
2-5 浮點數表示法 IEEE 754標準
單倍精準數 符號位元:1個位元,以0表示正數;以1表示負數 指數部分:8個位元,以過剩127(Excess 127)方式表示 尾數部分:23個位元,從標準化的小數點後開始存起,不夠的位元部份補0
實數10110.100011 的浮點數表示法
實數-0.0010011的浮點數表示法
浮點數表示法的數值
浮點數表示法的數值 -
請試試下面的例子 (IEEE 754 單倍精準數表示法) 1.5 0 01111111 10000000000000000000000 125.625 0 10000101 11110110100000000000000 http://babbage.cs.qc.edu/IEEE-754/Decimal.html (芃安助教提供的驗算網址)
IEEE 754單倍精準數 0的公訂表示法為00000000000000000000000000000000 10000000000000000000000000000000 也是0(代表-0) 指數部分的-127(00000000)和+128(11111111)做為特殊用途 最小的正數為00000000100000000000000000000000 其數值為+2-126; 最大的正數為01111111011111111111111111111111 其數值為(2-2-23)x2127
2-6 ASCII及Unicode 在電腦裡,所有的文字也存成位元字串,因此我們必須有公訂的對照表,以便我們能在儲存時將文字轉成位元字串,而在解讀時能將位元字串轉回文字 ASCII Unicode EBCDIC Big5 GB
ASCII (7位元)
Unicode 16 bits e.g. 趙(8D99) 坤(5764) 茂(8302)
Unicode符號對照表
Unicode官方網頁www.unicode.org
http://www.cns11643.gov.tw/seeker/chinese/search.jsp
http://www-atm.physics.ox.ac.uk/user/iwi/charmap.html
從造字程式找
從造字程式找(續) 按確定選擇字碼 從視窗欄選參照 在形狀區輸入中文字
在HTML裡的Unicode 例:趙(8D99) 坤(5764) 茂(8302) 趙坤茂