第二章 數(shù)據(jù)的機(jī)器層次表示_第1頁
第二章 數(shù)據(jù)的機(jī)器層次表示_第2頁
第二章 數(shù)據(jù)的機(jī)器層次表示_第3頁
第二章 數(shù)據(jù)的機(jī)器層次表示_第4頁
第二章 數(shù)據(jù)的機(jī)器層次表示_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第二章 數(shù)據(jù)的機(jī)器層次表示 第二章 數(shù)據(jù)的機(jī)器層次表示 2.1 數(shù)值數(shù)據(jù)的表示 2.2 機(jī)器數(shù)的定點(diǎn)表示與浮點(diǎn)表示 2.3 非數(shù)值數(shù)據(jù)的表示 2.4 十進(jìn)制數(shù)和數(shù)串的表示 2.5 現(xiàn)代微型計(jì)算機(jī)系統(tǒng)中的數(shù)據(jù)表示舉例 2.6 數(shù)據(jù)校驗(yàn)碼 第二章 數(shù)據(jù)的機(jī)器層次表示 2.1 數(shù)值數(shù)據(jù)的表示 2.2 機(jī)器數(shù)的定點(diǎn)表示與浮點(diǎn)表示 2.3 非數(shù)值數(shù)據(jù)的表示 2.4 十進(jìn)制數(shù)和數(shù)串的表示 2.5 現(xiàn)代微型計(jì)算機(jī)系統(tǒng)中的數(shù)據(jù)表示舉例 2.6 數(shù)據(jù)校驗(yàn)碼 2.1 數(shù)值數(shù)據(jù)的表示 預(yù)備知識:進(jìn)制以及進(jìn)制轉(zhuǎn)換 二進(jìn)制、八進(jìn)制、十進(jìn)制、十六進(jìn)制的相互 轉(zhuǎn)換,如圖 2.1 數(shù)值數(shù)據(jù)的表示 什么是真值,什么是機(jī)器數(shù)(機(jī)

2、器碼)? 一般地,直接用正號“+”和負(fù)號“-”來表示符 號的二進(jìn)制數(shù),叫做符號數(shù)的真值真值。當(dāng)使符號 數(shù)值化以后,就可以在計(jì)算機(jī)中使用它。計(jì)算 機(jī)中使用的符號數(shù)叫做機(jī)器數(shù)機(jī)器數(shù)。 真值與內(nèi)存的二進(jìn)制不一定是自動轉(zhuǎn)換的關(guān) 系 2.1 數(shù)值數(shù)據(jù)的表示 真值在計(jì)算機(jī)中的存在形式(機(jī)器碼)的表示與設(shè) 計(jì)該機(jī)器時(shí)候所規(guī)定的數(shù)值的表示法有關(guān)。機(jī)器碼 的表示方法有: 原碼 補(bǔ)碼 反碼 移碼 如 1 這個真值 在補(bǔ)碼表示的計(jì)算機(jī)的內(nèi)存中機(jī)器 碼為11111111 2.1 數(shù)值數(shù)據(jù)的表示 1、無符號數(shù)和帶符號數(shù) 無符號數(shù):整個機(jī)器字長的全部二進(jìn)制位均 表示數(shù)值位。 帶符號數(shù):帶有“+”或“-”的數(shù),一般在計(jì)算

3、機(jī)中用“0”表示“+”,用“1”表示“-”。 問題:在計(jì)算機(jī)中怎么區(qū)分一個數(shù)是無符號 數(shù)還是帶符號數(shù)? 2.1 數(shù)值數(shù)據(jù)的表示 你自已決定是否需要有正負(fù)。 就像我們必須決定某個量使用整數(shù)還是實(shí)數(shù),使用 多大的范圍數(shù)一樣,我們必須自已決定某個量是否 需要正負(fù)。如果這個量不會有負(fù)值,那么我們可以 定它為帶正負(fù)的類型。 在計(jì)算機(jī)中,可以區(qū)分正負(fù)的類型,稱為有符類型,在計(jì)算機(jī)中,可以區(qū)分正負(fù)的類型,稱為有符類型, 無正負(fù)的類型(只有正值),稱為無符類型。無正負(fù)的類型(只有正值),稱為無符類型。 數(shù)值類型分為整型或?qū)嵭?,其中整型又分為無符類數(shù)值類型分為整型或?qū)嵭?,其中整型又分為無符類 型或有符類型,而實(shí)

4、型則只有符類型。型或有符類型,而實(shí)型則只有符類型。 字符類型也分為有符和無符類型。字符類型也分為有符和無符類型。 比如有兩個量,年齡和庫存,我們可以定前者為無 符的字符類型,后者定為有符的整數(shù)類型。 2.1 數(shù)值數(shù)據(jù)的表示 使用二制數(shù)中的最高位表示正負(fù)。 首先得知道最高位是哪一位?1個字節(jié)的類型,如字符類型,最高位是第 7位,2個字節(jié)的數(shù),最高位是第15位,4個字節(jié)的數(shù),最高位是第31位。 不同長度的數(shù)值類型,其最高位也就不同,但總是最左邊的那位(如下 示意)。字符類型固定是1個字節(jié),所以最高位總是第7位。 (紅色為最高位) 單字節(jié)數(shù): 1111 1111 雙字節(jié)數(shù): 1111 1111 11

5、11 1111 四字節(jié)數(shù): 1111 1111 1111 1111 1111 1111 1111 1111 當(dāng)我們指定一個數(shù)量是無符號類型時(shí),那么其最高位的1或0,和其它位 一樣,用來表示該數(shù)的大小。 當(dāng)我們指定一個數(shù)量是無符號類型時(shí),此時(shí),最高數(shù)稱為“符號位”。 為1時(shí),表示該數(shù)為負(fù)值,為0時(shí)表示為正值。 2.1 數(shù)值數(shù)據(jù)的表示 無符號數(shù)和有符號數(shù)的范圍區(qū)別。 無符號數(shù)中,所有的位都用于直接表示該值的大小。有符號數(shù)中最高位 用于表示正負(fù),所以,當(dāng)為正值時(shí),該數(shù)的最大值就會變小。我們舉一 個字節(jié)的數(shù)值對比: 無符號數(shù): 1111 1111 值:255 1* 27 + 1* 26 + 1* 25

6、 + 1* 24 + 1* 23 + 1* 22 + 1* 21 + 1* 20 有符號數(shù): 0111 1111 值:127 1* 26 + 1* 25 + 1* 24 + 1* 23 + 1* 22 + 1* 21 + 1* 20 同樣是一個字節(jié),無符號數(shù)的最大值是255,而有符號數(shù)的最大值是127。 原因是有符號數(shù)中的最高位被挪去表示符號了。并且,我們知道,最高 位的權(quán)值也是最高的(對于1字節(jié)數(shù)來說是2的7次方=128),所以僅僅 少于一位,最大值一下子減半。 不過,有符號數(shù)的長處是它可以表示負(fù)數(shù)。因此,雖然它的在最大值縮 水了,卻在負(fù)值的方向出現(xiàn)了伸展。我們?nèi)砸粋€字節(jié)的數(shù)值對比: 無符號

7、數(shù): 0 - 255 有符號數(shù): -128 - 0 - 127 2.1 數(shù)值數(shù)據(jù)的表示 一個帶符號數(shù),如果是正的,在計(jì)算機(jī)中和 無符號數(shù)相同,用原碼表示,如果是負(fù)的用 補(bǔ)碼表示,下面我們講一下原碼和補(bǔ)碼的概 念。 2.1 數(shù)值數(shù)據(jù)的表示 1、 原碼表示 1)定點(diǎn)小數(shù)的原碼 定義: 設(shè)X是一個二進(jìn)制表示 的真值,形如 0.x1x2x3xn,其中 xi=0,1,設(shè)X原為原碼形式表示的機(jī)器 數(shù), 則: X原= 在X原中用 0 1來表示 +、號 0正負(fù) 101 01 XX XX 2.1 數(shù)值數(shù)據(jù)的表示 舉例:設(shè)有一個小數(shù)(二進(jìn)制)+0.1010110, 則在使用原碼作為表示法的計(jì)算機(jī)的內(nèi)存中的機(jī)器 數(shù)

8、是多少?(簡而言之, +0.1010110 的原碼是多 少,或 +0.1010110 原=?) -0.1011011原=? 解: +0.1010110 原= 0.1010110 (第1個0是符號) -0.1011011原 = 1.0000000 (0.1011011) = 1.0000000+ 0.1011011= 1.1011011 注意,在計(jì)算機(jī)中小數(shù)點(diǎn)是人為規(guī)定其位置,并沒有 一個小數(shù)點(diǎn)存在。 2.1 數(shù)值數(shù)據(jù)的表示 原碼的性質(zhì): 最高位表示符號 0-正 1-負(fù) 0的原碼有兩種形式 +0 -0 僅從機(jī)器數(shù)的值而言,負(fù)數(shù)的原碼大于正數(shù)的原碼 如 0.1010110 在機(jī)器中表現(xiàn)為 0101

9、0110 而1.1011011在機(jī)器中表現(xiàn)為 11010110 (小數(shù)點(diǎn)是程序自己確定,計(jì)算機(jī)只管保存和運(yùn)算) 2.1 數(shù)值數(shù)據(jù)的表示 2)定點(diǎn)整數(shù)的原碼 當(dāng)我們約定小數(shù)點(diǎn)在數(shù)的最后,則機(jī)器數(shù)表示整數(shù)。 整數(shù)的原碼定義: 設(shè)X是一個二進(jìn)制表示的真值,形如 x1x2x3xn,其中 xi=0,1,設(shè)X原為原碼形式表示的機(jī)器數(shù), 則: X原= 在X原中用 0 1來表示 +、號 0正負(fù) 11 1 202 02 nn n XX XX 2.1 數(shù)值數(shù)據(jù)的表示 舉例:設(shè)機(jī)器的字長為8位(即n=8) 則 +1010100原= 01010100 -1010100原= 10000000 (-1010100) =

10、11010100 3)原碼的優(yōu)缺點(diǎn) 優(yōu)點(diǎn):利于實(shí)現(xiàn)乘除 不方便實(shí)現(xiàn)加減 2.1 數(shù)值數(shù)據(jù)的表示 2、 補(bǔ)碼表示 調(diào)整手表到標(biāo)準(zhǔn)時(shí)間, 可以有兩種方法:加法和 減法 10 + 5 (mod 12) =3 10 7 (mod 12) =3 由于有模運(yùn)算的存在,我 們可以把減法變成加法來 進(jìn)行;而且計(jì)算機(jī)運(yùn)算的 位數(shù)有限,也可以看成一 個鐘表 2.1 數(shù)值數(shù)據(jù)的表示 設(shè)計(jì)算機(jī)字長為n位,則數(shù)將在000 到111 總數(shù)為 個數(shù)的范圍內(nèi);因此,我們可以把 看成模, 則運(yùn)算的結(jié)果取模后也必然在這個范圍內(nèi)。 對于計(jì)算機(jī)的表示數(shù)而言,補(bǔ)碼定義分定點(diǎn)小 數(shù)和定點(diǎn)整數(shù)的補(bǔ)碼定義。 定點(diǎn)小數(shù)的補(bǔ)碼定義 即 正小數(shù)的

11、補(bǔ)碼是自身,而負(fù)小數(shù)的補(bǔ) 碼要加上2 01,2 10, XX XX X 補(bǔ) 2.1 數(shù)值數(shù)據(jù)的表示 這個定義在數(shù)軸上的意義如圖: 舉例: +0.1011011補(bǔ)=0.1011011 -0.1010110補(bǔ)=2+(- 0.1010110) =10.0000000 - 0.1010110 =1.0101000 注意:最前面的是符號位,其實(shí)負(fù)數(shù)相 當(dāng)于被移動到1 ,2)區(qū)間,還要提示一 點(diǎn),在計(jì)算機(jī)中小數(shù)點(diǎn)的位置是我們約 定的。如第2個數(shù)存儲在內(nèi)存: 定點(diǎn)小數(shù)即我們約定小數(shù)點(diǎn)在最高位后 的數(shù)。 2.1 數(shù)值數(shù)據(jù)的表示 定點(diǎn)整數(shù)的補(bǔ)碼 設(shè)字長為n位,則數(shù)的范圍是-2n-1, 2n-1) 則定點(diǎn)整數(shù)的的

12、補(bǔ)碼定義是: 假設(shè)字長8位,則: +86補(bǔ) = 01010110 -86補(bǔ) = 28+(-1010110) =100000000-1010110 =10101010 也就是說,在補(bǔ)碼表示的計(jì)算機(jī)中-86保存為 計(jì)算-1在16位補(bǔ)碼表示, 體驗(yàn) int i=-1;unsigned int j =i; 02,2 20, 1 1 XX XX X nn n 補(bǔ) 2.1 數(shù)值數(shù)據(jù)的表示 補(bǔ)碼的性質(zhì): (1) 補(bǔ)碼的最高位反映了真值的正負(fù); (2) 0補(bǔ)只有一種形式,這由定義可以看出; (3)負(fù)數(shù)的補(bǔ)碼從值上看是大于整數(shù)的補(bǔ)碼(符 號位也表示值時(shí)) 2.1 數(shù)值數(shù)據(jù)的表示 課堂練習(xí): 為什么原碼不方便加減

13、?要使用補(bǔ)碼? 計(jì)算下列真值的補(bǔ)碼(n=8),多余的數(shù)據(jù)不要: 0.125補(bǔ) = ? -0.3567補(bǔ)=? -0.2853補(bǔ)=? 65補(bǔ) = ? -113補(bǔ) = ? -3補(bǔ)= 2.1 數(shù)值數(shù)據(jù)的表示 4、反碼表示 也有定點(diǎn)小數(shù)反碼和定點(diǎn)整數(shù)反碼; (1)定點(diǎn)小數(shù)反碼 定義:設(shè)X= 0.x1x2xn-1 則定點(diǎn)小數(shù)反碼定義為: 注意到 0在兩個公式中都包括。 11 1 202 02 nn n XX XX 2.1 數(shù)值數(shù)據(jù)的表示 舉例 + 0.1110100反=0.1110100 -0.1101011反=2-2-8+1+( -0.1101011) = 10.0000000 0.0000001 0.

14、1101011 = 1.0010100 與 0.1101011 逐位比較,得出結(jié)論: 反碼實(shí)質(zhì)上是正數(shù)不變,負(fù)數(shù)的反碼是原碼 各位求反 0-1, 1-0得到。 2.1 數(shù)值數(shù)據(jù)的表示 (2)定點(diǎn)整數(shù)反碼 定義:設(shè)X= xn-2xn-3x1 x0 則定點(diǎn)整數(shù)反碼定義為: 注意到 在兩個公式中都包括0 。 類似,-1010011反=00101100 02,12 20, 1 1 XX XX X nn n 反 2.1 數(shù)值數(shù)據(jù)的表示 原碼、反碼、補(bǔ)碼比較: (1) 三種編碼的最高位都是符號位。 (2) 當(dāng)真值為正時(shí),三種編碼的符號位都用0 表示,數(shù)值部分與真值相同。 即它們的表示 方法是相同的。 2.

15、1 數(shù)值數(shù)據(jù)的表示 (3) 當(dāng)真值為負(fù)時(shí),三種編碼的符號位都用1 表示,但數(shù)值部分的表示各不相同,數(shù)值部 分存在這樣的關(guān)系:補(bǔ)碼是原碼的“求反加 1”(整數(shù)),或者“求反末位加1”(小數(shù));反碼 是原碼的“每位求反”。 (4) 它們所能表示的數(shù)據(jù)范圍,基本上是一樣 的,-2nX2n(整數(shù))或-1X1( 小數(shù)),只是 補(bǔ)碼多表示一個數(shù)-2n(整數(shù))或-1(小數(shù))。 第二章 數(shù)據(jù)的機(jī)器層次表示 2.1 數(shù)值數(shù)據(jù)的表示 2.2 機(jī)器數(shù)的定點(diǎn)表示與浮點(diǎn)表示 2.3 非數(shù)值數(shù)據(jù)的表示 2.4 十進(jìn)制數(shù)和數(shù)串的表示 2.5 現(xiàn)代微型計(jì)算機(jī)系統(tǒng)中的數(shù)據(jù)表示舉例 2.6 數(shù)據(jù)校驗(yàn)碼 第二章 數(shù)據(jù)的機(jī)器層次表示

16、 2.1 數(shù)值數(shù)據(jù)的表示 2.2 機(jī)器數(shù)的定點(diǎn)表示與浮點(diǎn)表示 2.3 非數(shù)值數(shù)據(jù)的表示 2.4 十進(jìn)制數(shù)和數(shù)串的表示 2.5 現(xiàn)代微型計(jì)算機(jī)系統(tǒng)中的數(shù)據(jù)表示舉例 2.6 數(shù)據(jù)校驗(yàn)碼 2.2 機(jī)器數(shù)的定點(diǎn)表示與浮點(diǎn)表示 前面介紹了數(shù)在計(jì)算機(jī)中表示方法(編碼),現(xiàn) 在討論小數(shù)點(diǎn)的問題,在數(shù)據(jù)保存到內(nèi)存時(shí), 不用考慮小數(shù)點(diǎn)的符號也要放進(jìn)去,在設(shè)計(jì) 計(jì)算機(jī)或在指定數(shù)據(jù)類型時(shí),就有了默認(rèn)的 小數(shù)點(diǎn)位置。如01010100 如果我們把它看 成純小數(shù),則相當(dāng)于有一個小數(shù)點(diǎn)在最高位 和次高位之間;如果我們把它看成純整數(shù), 則相當(dāng)于有一個小數(shù)點(diǎn)在最后;雖然我們不 需要專門的空間來存儲小數(shù)點(diǎn),但我們可以 考慮是定

17、點(diǎn)表示還是浮點(diǎn)表示。 2.2 機(jī)器數(shù)的定點(diǎn)表示與浮點(diǎn)表示 數(shù)據(jù)的表示常用的有兩種:定點(diǎn)表示法和浮 點(diǎn)表示法 1、 定點(diǎn)表示法: 指小數(shù)點(diǎn)被約定的位置不變,一般有兩種形 式 一種是純小數(shù),另一種是純整數(shù); 注意:這個小數(shù)點(diǎn)是我們約定的,計(jì)算機(jī)的 CPU并不知道,如果要顯示出來,則通過我 們的程序加上小數(shù)點(diǎn)顯示出來; 2.2 機(jī)器數(shù)的定點(diǎn)表示與浮點(diǎn)表示 1)定點(diǎn)數(shù)的范圍 (1)n位長(1位符號位,n-1位數(shù)值)的定點(diǎn)純小數(shù)的 范圍 考慮原碼方式和補(bǔ)碼表示方式: 原碼定點(diǎn)純小數(shù) ?0000000 ?表示符號位,符號位后認(rèn)為有一個小數(shù)點(diǎn) 正數(shù) 00.00 - 01111.11 0 1-2-n+1 負(fù)數(shù)

18、 10.00 - 11111.11 0 -(1-2-n+1) 小數(shù)點(diǎn)默認(rèn)在符號位后。所以范圍是-(1- 2- n+1),1- 2-n+1 2.2 機(jī)器數(shù)的定點(diǎn)表示與浮點(diǎn)表示 補(bǔ)碼定點(diǎn)純小數(shù) 按定義,補(bǔ)碼有 -1 X 故包含 -1 X1 所以不包含 1 所以, 數(shù)的范圍 -1,1) 因?yàn)?不到 1 , 而數(shù)據(jù)的最小單位是 0.00.1 所以 -1 1 -2-n+1是其范圍 2.2 機(jī)器數(shù)的定點(diǎn)表示與浮點(diǎn)表示 (2)n位長(1位符號位,n-1位數(shù)值)的定點(diǎn) 整數(shù)的范圍 原碼定點(diǎn)整數(shù) 正數(shù): 000.00 01.111 02n-1-1 負(fù)數(shù): 100.00 11.111 0-(2n-1- 1) 所以

19、原碼的范圍 -(2n-1-1), 2n-1-1 2.2 機(jī)器數(shù)的定點(diǎn)表示與浮點(diǎn)表示 補(bǔ)碼定點(diǎn)整數(shù) 按補(bǔ)碼定義 說明負(fù)數(shù)到-2n-1,而正數(shù)不到2n-1,差0.01, 因此,補(bǔ)碼的范圍是 -2n-1, 2n-1)即 -2n-1, 2n-1-1 2.2 機(jī)器數(shù)的定點(diǎn)表示與浮點(diǎn)表示 如果表示為無符號數(shù),則所有的位都表示為數(shù)值, 則從 00.00到11.11數(shù)的范圍是02n-1 例如:在C語言中(C語言程序): int i ; /* i的范圍是 -3276832767*/ unsigned int j ; /* j的范圍是 065535*/ 注:int的字長是2個字節(jié)(即sizeof(int)為2 )

20、共16位, 類似的,char類型的范圍是 128127,而unsigned char 的范圍是 0255 2.2 機(jī)器數(shù)的定點(diǎn)表示與浮點(diǎn)表示 2、 浮點(diǎn)表示法 1)浮點(diǎn)數(shù)的構(gòu)成 先看常用的表示大數(shù)的一般形式: 60000 = 0.6 105 N m Re 其中 N稱數(shù)值, m稱尾數(shù), R稱基數(shù), e稱階碼或指數(shù) 如果在計(jì)算機(jī)中表示,則進(jìn)制是確定的R=2,沒有必要 為一個不變的數(shù)2專門用空間存儲,因此,要在計(jì) 算機(jī)中保存一個數(shù)值N,只要保存m和e就可以了。 2.2 機(jī)器數(shù)的定點(diǎn)表示與浮點(diǎn)表示 在計(jì)算機(jī)中,用長為n位的二進(jìn)制來表示浮點(diǎn)數(shù) N的值: 其中,指數(shù)e有正負(fù),尾數(shù)m也有正負(fù)。 由一般我們所

21、了解的10進(jìn)制形式, 如 x=a 10b 知道:b越大,則x能表示的值就越 大,所以b所能達(dá)到的大小直接反映了x的范圍, 而a的位數(shù)多少則反映了x的精度,例如: 3 1013比3 1010的范圍廣; 而 3.141592 104比3.14 104的精度高。 2.2 機(jī)器數(shù)的定點(diǎn)表示與浮點(diǎn)表示 所以在上面的定義中,e表示了數(shù)的范圍,而m表示 了數(shù)的精度。e的位數(shù)越多,則能表示的數(shù)的范圍 就越大,而m的位數(shù)越多,則能表示的精度就越高, 例如C語言中的float和double類型的比較。 float pi1=3.14259265 ;/*精度不夠,舍棄*/ double pi2 = 3.14159265358979; 浮點(diǎn)數(shù)的符號由尾數(shù)的符號決定,而指數(shù)也有符號, 尾數(shù)的符號稱數(shù)符,而指數(shù)的符號稱階符 2.2 機(jī)器數(shù)的定點(diǎn)表示與浮點(diǎn)表示 如圖: 例子:假設(shè)要設(shè)計(jì)一臺計(jì)算機(jī),希望能表示的數(shù)的范 圍

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論