計算機組成原理:第2章 數(shù)據(jù)的機器層次表示_第1頁
計算機組成原理:第2章 數(shù)據(jù)的機器層次表示_第2頁
計算機組成原理:第2章 數(shù)據(jù)的機器層次表示_第3頁
計算機組成原理:第2章 數(shù)據(jù)的機器層次表示_第4頁
計算機組成原理:第2章 數(shù)據(jù)的機器層次表示_第5頁
已閱讀5頁,還剩116頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第2章數(shù)據(jù)的機器層次表示2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院第2章 數(shù)據(jù)是計算機加工和處理的對象,數(shù)據(jù)的機器層次表示將直接影響到計算機的結(jié)構(gòu)和性能。本章主要介紹無符號數(shù)和帶符號數(shù)的表示方法、數(shù)的定點與浮點表示方法、字符和漢字的編碼方法、數(shù)據(jù)校驗碼等。熟悉和掌握本章的內(nèi)容,是學(xué)習(xí)計算機原理的最基本要求。 2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.1 數(shù)值數(shù)據(jù)的表示2.1.1 計算機中的數(shù)值數(shù)據(jù) 在計算機中常用后綴字母來表示不同的數(shù)制。 十進制數(shù)(D) 二進制數(shù)(B) 八進制數(shù)(Q) 十六進制數(shù)(H) 在C語言中,八進制常數(shù)以前綴0開始,十六進制常數(shù)以前綴0 x開始。 2009.8北京理

2、工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.1 數(shù)值數(shù)據(jù)的表示2.1.2 無符號數(shù)和帶符號數(shù) 所謂無符號數(shù),就是整個機器字長的全部二進制位均表示數(shù)值位(沒有符號位),相當(dāng)于數(shù)的絕對值。 N1 =01001 表示無符號數(shù)9 N2 =11001 表示無符號數(shù)252009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.1 數(shù)值數(shù)據(jù)的表示 對于字長為n+1位的無符號數(shù)的表示范圍是0(2n+1-1)。 例如:字長為8位,無符號數(shù)的表示范圍是0255。1111111111111111000000000000000000000000111111112009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.1 數(shù)值數(shù)據(jù)的表示 所謂帶符號數(shù),即正、

3、負數(shù)。在日常生活中,我們用“+”、“-”號加絕對值來表示數(shù)值的大小,用這種形式表示的數(shù)值在計算機技術(shù)中稱為“真值”。 對于數(shù)的符號“+”或“-”,計算機是無法識別的,因此需要把數(shù)的符號數(shù)碼化。通常,約定二進制數(shù)的最高位為符號位,“0”表示正號,“1”表示負號。這種在計算機中使用的表示數(shù)的形式稱為機器數(shù)。2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.1 數(shù)值數(shù)據(jù)的表示 對于帶符號數(shù),最高位用來表示符號位,而不再表示數(shù)值位了,前例中的N1、N2在這里變?yōu)椋?N1 =01001 表示帶符號數(shù)+9 N2 =11001 根據(jù)不同的機器數(shù)表示不同的值,如: 原碼時表示帶符號數(shù)-9, 補碼則表示-7, 反碼

4、則表示-6。 2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.1 數(shù)值數(shù)據(jù)的表示2.1.3 原碼表示法 原碼表示法是一種最簡單的機器數(shù)表示法,用最高位表示符號位,符號位為“0”表示該數(shù)為正,符號位為“1”表示該數(shù)為負,數(shù)值部分與真值相同。 若真值為純小數(shù),它的原碼形式為Xs.X1X2Xn,其中Xs表示符號位。 例1:X1=0.0110, X2=-0.0110 X1原=0.0110 , X2原=1.01102009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.1 數(shù)值數(shù)據(jù)的表示 若真值為純整數(shù),它的原碼形式為XsX1X2Xn,其中Xs表示符號位。 例2:X1=1101, X2=-1101 X1原=0,11

5、01 , X2原=1,1101 在原碼表示中,真值0有兩種不同的表示形式: +0原 =00000 -0原 =10000注意2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.1 數(shù)值數(shù)據(jù)的表示 原碼表示法的優(yōu)點是直觀易懂,機器數(shù)和真值間的相互轉(zhuǎn)換很容易,用原碼實現(xiàn)乘、除運算的規(guī)則很簡單;缺點是實現(xiàn)加、減運算的規(guī)則較復(fù)雜。2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.1 數(shù)值數(shù)據(jù)的表示2.1.4 補碼表示法 為了克服原碼在加、減運算中的缺點,引入了補碼表示法,補碼表示法的設(shè)想是:使符號位參加運算,從而簡化加減法的規(guī)則;使減法運算轉(zhuǎn)化成加法運算,從而簡化機器的運算器電路。1.模和同余 由于設(shè)備的原因,機

6、器數(shù)是有字長限制的,不可能容納無限大的任意數(shù)。當(dāng)運算結(jié)果超出了機器的最大表示范圍,就會發(fā)生溢出(丟失進位),此時所產(chǎn)生的溢出量稱為模,用字母M表示。2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院000024 23 22 21 202.1 數(shù)值數(shù)據(jù)的表示 模實際上是一個計量器的容量。例如:一個4位的計數(shù)器,它的計數(shù)值為015,當(dāng)計數(shù)器計滿15之后再加1,這個計數(shù)器就發(fā)生溢出,其溢出量為16,也就是模等于16。00010010001101000101011001111000100110101011110011011110111100001丟失 一個字長為n+1位的純整數(shù)的溢出量為2n+1,即以2n+1

7、為模。 一個純小數(shù)的溢出量為2,即以2為模。2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.1 數(shù)值數(shù)據(jù)的表示 同余概念:即兩整數(shù)A、B除以同一正整數(shù)M,所得余數(shù)相同,則稱A、B對模M同余。 A=B (mod M),如23=13(mod10) 對鐘表而言,M=12。假設(shè):時鐘停在8點,而現(xiàn)在正確的時間是6點,這時撥準(zhǔn)時鐘的方法有兩種: 分針倒著旋轉(zhuǎn)2圈,等于分針正著旋轉(zhuǎn)10圈。故有:-2=10 (mod 12) ,即 -2和10同余。倒撥正撥2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.1 數(shù)值數(shù)據(jù)的表示 8-2=8+10 (mod 12) 可見,只要確定了“?!?,就可找到一個與負數(shù)等價的正數(shù)(

8、該正數(shù)即為負數(shù)的補數(shù))來代替此負數(shù),而這個正數(shù)可以用模加上負數(shù)本身求得,這樣就可把減法運算用加法實現(xiàn)了。 9-5=9+(-5)=9+(12-5)=9+7=4 (mod 12) 65-25=65+(-25)=65+(100-25)=65+75= 40 (mod 100) 將補數(shù)的概念用到計算機中,便出現(xiàn)了補碼這種機器數(shù)。 2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.1 數(shù)值數(shù)據(jù)的表示2.補碼表示 補碼的符號位表示方法與原碼相同,其數(shù)值部分的表示與數(shù)的符號有關(guān):對于正數(shù),數(shù)值部分與真值形式相同;對于負數(shù),其數(shù)值部分為真值形式按位取反,且在最低位加1。 若真值為純小數(shù),它的補碼形式為Xs.X1X2

9、Xn,其中Xs表示符號位。 例1:X1=0.0110 , X2=-0.0110 X1補=0.0110 , X2補=1.10102009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.1 數(shù)值數(shù)據(jù)的表示 若真值為純整數(shù),它的補碼形式為XsX1X2Xn,其中Xs表示符號位。 例2:X1=1101 , X2=-1101 X1補=0,1101 , X2補=1,0011 在補碼表示中,真值0的表示形式是唯一的。 +0補=-0補=00000注意2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.1 數(shù)值數(shù)據(jù)的表示3.由真值、原碼轉(zhuǎn)換為補碼當(dāng)X為正數(shù)時,X補=X原=X。當(dāng)X為負數(shù)時,由X原轉(zhuǎn)換為X補的方法: X原除掉符號位

10、外的各位取反加“1”。 自低位向高位,尾數(shù)的第一個“1”及其右部的“0”保持不變,左部的各位取反,符號位保持不變。 例如:X原 =1.1110011000 X補 =1.0001101000不變不變變反2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.1 數(shù)值數(shù)據(jù)的表示2.1.5 反碼表示法 反碼的符號位表示方法與原碼相同,但其數(shù)值部分的表示與數(shù)的符號有關(guān):對于正數(shù),數(shù)值部分與真值形式相同;對于負數(shù),數(shù)值部分為真值形式按位取反。 若真值為純小數(shù),它的反碼形式為Xs.X1X2Xn,其中Xs表示符號位。 例1:X1=0.0110 , X2=-0.0110 X1反=0.0110 , X2反=1.10012

11、009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.1 數(shù)值數(shù)據(jù)的表示 若真值為純整數(shù),它的反碼形式為XsX1X2Xn,其中Xs表示符號位。 例2:X1=1101, X2=-1101 X1反=0,1101 , X2反=1,0010 在反碼表示中,真值0也有兩種不同的表示形式: +0反=00000 -0反=11111注意2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.1 數(shù)值數(shù)據(jù)的表示2.1.6 3種機器數(shù)的比較 對于正數(shù)它們都等于真值本身,而對于負數(shù)各有不同的表示。 最高位都表示符號位,補碼和反碼的符號位可和數(shù)值位一起參加運算;但原碼的符號位必須分開進行處理。2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2

12、.1 數(shù)值數(shù)據(jù)的表示 對于真值0,原碼和反碼各有兩種不同的表示形式,而補碼只有唯一的一種表示形式。 原碼、反碼表示的正、負數(shù)范圍是對稱的;但補碼負數(shù)能多表示一個最負的數(shù)(絕對值最大的負數(shù)),其值等于-2n(純整數(shù))或-1(純小數(shù))。注意2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.1 數(shù)值數(shù)據(jù)的表示設(shè)機器字長4位(含1位符號位),以純整數(shù)為例:原碼或反碼可表示的數(shù) 補碼可表示的數(shù)(多表示一個負數(shù))0+1+2+3+4+5+6+7-1-2-3-4-5-6-7+0-07個正數(shù)7個負數(shù)0+1+2+3+4+5+6+7-1-2-3-4-5-6-7-87個正數(shù)8個負數(shù)-82009.8北京理工大學(xué)計算機科學(xué)技

13、術(shù)學(xué)院2.1 數(shù)值數(shù)據(jù)的表示 真值與3種機器數(shù)間的對照100010001000-8-8-8100010001000-0-0-0100010001000-7-7-72009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.1 數(shù)值數(shù)據(jù)的表示 如果已知機器的字長,則機器數(shù)的位數(shù)應(yīng)補夠相應(yīng)的位。設(shè)機器字長為8位,則: X1=1011 X2=-1011 X1原=0,0001011 X2原=1,0001011 X1補=0,0001011 X2補=1,1110101 X1反=0,0001011 X2反=1,1110100 X1=0.1011 X2=-0.1011 X1原=0.1011000 X2原=1.1011000

14、 X1補=0.1011000 X2補=1.0101000 X1反=0.1011000 X2反=1.01001112009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.2 機器數(shù)的定點表示與浮點表示 2.2.1 定點表示法 在定點表示法中約定:所有數(shù)據(jù)的小數(shù)點位置固定不變。通常,把小數(shù)點固定在有效數(shù)位的最前面或末尾,這就形成了兩類定點數(shù)。1.定點小數(shù) 小數(shù)點的位置固定在最高有效數(shù)位之前,符號位之后,記作Xs.X1X2Xn,這個數(shù)是一個純小數(shù)。定點小數(shù)的小數(shù)點位置是隱含約定的,小數(shù)點并不需要真正地占據(jù)一個二進制位。2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院20 2-1 2-2 2-(n-1)2-n2.2

15、機器數(shù)的定點表示與浮點表示 當(dāng)Xs=0,X1Xn=1時,X為最大正數(shù),即:X最大正數(shù) =(1-2-n)。1最大正數(shù)1110定點小數(shù)格式小數(shù)點位置XsX1XnX2Xn-120 2-1 2-2 2-(n-1)2-n注意2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院20 2-1 2-2 2-(n-1)2-n2.2 機器數(shù)的定點表示與浮點表示 最小正數(shù)00100定點小數(shù)格式小數(shù)點位置XsX1XnX2Xn-120 2-1 2-2 2-(n-1)2-n 當(dāng)Xn=1,XsXn-1=0時,X為最小正數(shù),即:X最小正數(shù) =2-n。注意2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.2 機器數(shù)的定點表示與浮點表示 當(dāng)X

16、s=1,表示X為負數(shù),此時情況要稍微復(fù)雜一些,這是因為在計算機中帶符號數(shù)可用補碼表示,也可用原碼表示。如前所述,原碼與補碼所能表示的絕對值最大的負數(shù)是有區(qū)別的,所以原碼和補碼的表示范圍有一些差別。2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院20 2-1 2-2 2-(n-1)2-n20 2-1 2-2 2-(n-1)2-n2.2 機器數(shù)的定點表示與浮點表示 原碼表示的絕對值最大負數(shù)11111 X絕對值最大負數(shù)(原碼表示時)=-(1-2-n)補碼表示的絕對值最大負數(shù)10000X絕對值最大負數(shù)(補碼表示時)=-1注意2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院 綜上所述: 若機器字長有n+1位,則:原

17、碼定點小數(shù)表示范圍為:-(1-2-n)(1-2-n)補碼定點小數(shù)表示范圍為:-1(1-2-n) 若機器字長有8位,則:原碼定點小數(shù)表示范圍為:-(1-2-7)(1-2-7)補碼定點小數(shù)表示范圍為:-1(1-2-7)2.2 機器數(shù)的定點表示與浮點表示 2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2n 2n-1 2n-2 21 202.2 機器數(shù)的定點表示與浮點表示 2.定點整數(shù) 小數(shù)點位置隱含固定在最低有效數(shù)位之后,記作XsX1X2Xn,這個數(shù)是一個純整數(shù)。定點整數(shù)格式小數(shù)點位置XsX1XnX22n 2n-1 2n-2 201最大正數(shù)1110X最大正數(shù) =(2n-1)注意2009.8北京理工大學(xué)計

18、算機科學(xué)技術(shù)學(xué)院2n 2n-1 2n-2 21 202n 2n-1 2n-2 21 202n 2n-1 2n-2 21 202.2 機器數(shù)的定點表示與浮點表示X絕對值最大負數(shù)(原碼表示時)=-(2n-1)最小正數(shù)00100X最小正數(shù) =1X絕對值最大負數(shù)(補碼表示時)=-2n原碼表示的絕對值最大負數(shù)11111補碼表示的絕對值最大負數(shù)10000注意注意2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院 綜上所述: 若機器字長有n+1位,則:原碼定點整數(shù)的表示范圍為:-(2n-1)(2n-1)補碼定點整數(shù)的表示范圍為:-2n (2n-1) 若機器字長有8位,則:原碼定點整數(shù)表示范圍為:-127127補碼定

19、點整數(shù)表示范圍為:-1281272.2 機器數(shù)的定點表示與浮點表示 2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.2 機器數(shù)的定點表示與浮點表示 2.2.2 浮點表示法 小數(shù)點的位置根據(jù)需要而浮動,這就是浮點數(shù)。例如: N=MrE 式中:r為浮點數(shù)階碼的底,與尾數(shù)的基數(shù)相同,通常r=2。E和M都是帶符號數(shù),E叫做階碼,M叫做尾數(shù)。在大多數(shù)計算機中,尾數(shù)為純小數(shù),常用原碼或補碼表示;階碼為純整數(shù),常用移碼或補碼表示。=M2E2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.2 機器數(shù)的定點表示與浮點表示 浮點數(shù)的一般格式: 浮點數(shù)的底是隱含的,在整個機器數(shù)中不出現(xiàn)。階碼的符號位為es,階碼的大小反映

20、了在數(shù)N中小數(shù)點的實際位置;尾數(shù)的符號位為ms,它是整個浮點數(shù)的符號位,反映了該浮點數(shù)的正負。 假設(shè)階碼和尾數(shù)部分均用補碼表示。esemms階碼部分E尾數(shù)部分MK位N位1位1位2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院階碼部分E尾數(shù)部分Mesms2-1 2-(n-1)2-n2k-1 202.2 機器數(shù)的定點表示與浮點表示00111111.浮點數(shù)的表示范圍 當(dāng)es=0,ms=0,階碼和尾數(shù)的數(shù)值位各位全為1(即階碼和尾數(shù)都為最大正數(shù))時,該浮點數(shù)為最大正數(shù)。X最大正數(shù)=(1-2-n)22k-1注意2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院階碼部分E尾數(shù)部分Mesms2-1 2-(n-1)2-n2

21、k-1 202.2 機器數(shù)的定點表示與浮點表示 當(dāng)es=1,ms=0,尾數(shù)的最低位mn=1,其余各位為0(即階碼為絕對值最大負數(shù),尾數(shù)為最小正數(shù))時,該浮點數(shù)為最小正數(shù)。1100000X最小正數(shù)=2-n2-2k注意2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院階碼部分E尾數(shù)部分Mesms2-1 2-(n-1)2-n2k-1 202.2 機器數(shù)的定點表示與浮點表示 當(dāng)es=0,階碼的數(shù)值位為全1;ms=1,尾數(shù)的數(shù)值位為全0(即階碼為最大正數(shù),尾數(shù)為絕對值最大的負數(shù))時,該浮點數(shù)為絕對值最大負數(shù)。 1110000X絕對值最大負數(shù)=-122k-1注意2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.2 機

22、器數(shù)的定點表示與浮點表示 2.規(guī)格化的浮點數(shù) 為了提高運算的精度,需要充分地利用尾數(shù)的有效數(shù)位,通常采取規(guī)格化的浮點數(shù)形式,即規(guī)定尾數(shù)的最高數(shù)位必須是一個有效值。 1/r |M| 1 如果r=2,則有1/2|M|1。 2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.2 機器數(shù)的定點表示與浮點表示 在尾數(shù)用原碼表示時,規(guī)格化浮點數(shù)的尾數(shù)的最高數(shù)位總等于1。在尾數(shù)用補碼表示時,規(guī)格化浮點數(shù)應(yīng)滿足尾數(shù)最高數(shù)位與符號位不同(msm1 =1),即當(dāng)1/2M1時,應(yīng)有0.1xxx形式,當(dāng)-1M-1/2時,應(yīng)有1.0 xxx形式。需要注意的是當(dāng)M=-1/2,對于原碼來說,是規(guī)格化數(shù),而對于補碼來說,不是規(guī)格化

23、數(shù);當(dāng)M= -1時,對于原碼來說,這將無法表示,而對于補碼來說,這是一個規(guī)格化數(shù)。 2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院階碼部分E尾數(shù)部分Mesms2-1 2-(n-1)2-n2k-1 20階碼部分E尾數(shù)部分Mesms2-1 2-(n-1)2-n2k-1 202.2 機器數(shù)的定點表示與浮點表示 X規(guī)格化的最小正數(shù)=2-12-2k00011111 X規(guī)格化的絕對值最小負數(shù)= -(2-1+2-n)2-2k01000100注意注意2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.2 機器數(shù)的定點表示與浮點表示 2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.2 機器數(shù)的定點表示與浮點表示 2.2.3

24、 浮點數(shù)階碼的移碼表示法 移碼就是在真值X上加一個常數(shù)(偏置值),相當(dāng)于X在數(shù)軸上向正方向平移了一段距離,這就是“移碼”一詞的來由,移碼也可稱為增碼或偏碼。 X移=偏置值+X 字長n+1位定點整數(shù)的移碼形式為X0X1X2Xn。2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.2 機器數(shù)的定點表示與浮點表示 最常見的移碼的偏置值為2n。當(dāng)字長8位時,偏置值為27。 例1:X=1011101 X移=27+X=10000000+1011101=11011101 X補=01011101 例2:X=-1011101 X移= 27 +X=10000000-1011101=00100011 X補=1010001

25、12009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院 2.2 機器數(shù)的定點表示與浮點表示2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院 2.2 機器數(shù)的定點表示與浮點表示偏置值為2n的移碼具有以下特點: 在移碼中,最高位為“0”表示負數(shù),最高位為“1”表示正數(shù)。 移碼為全0時,它所對應(yīng)的真值最小,為全1時,它所對應(yīng)的真值最大。 真值0在移碼中的表示形式是唯一的,即+0移=-0移=1000。 移碼把真值映射到一個正數(shù)域,所以可將移碼視為無符號數(shù),直接按無符號數(shù)規(guī)則比較大小。2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院 2.2 機器數(shù)的定點表示與浮點表示 同一數(shù)值的移碼和補碼除最高位相反外,其他各位相同。 浮點

26、數(shù)的階碼常采用移碼表示最主要的原因有:便于比較浮點數(shù)的大小。階碼大的,其對應(yīng)的真值就大,階碼小的,對應(yīng)的真值就小。簡化機器中的判零電路。當(dāng)階碼全為0,尾數(shù)也全為0時,表示機器零。注意2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.2 機器數(shù)的定點表示與浮點表示 2.2.4 定點/浮點表示法與定點/浮點計算機1. 定點/浮點表示法的區(qū)別 假設(shè)定點數(shù)和浮點數(shù)的字長相同。 (1)數(shù)值的表示范圍 浮點表示法所能表示的數(shù)值范圍將遠遠大于定點數(shù)。2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.2 機器數(shù)的定點表示與浮點表示 應(yīng)當(dāng)注意的有兩點:不管定點數(shù)還是浮點數(shù),每個數(shù)值都對應(yīng)于數(shù)軸上的一個點。所謂數(shù)的表示范

27、圍實際上指的只是數(shù)的上、下限,它們之間是一些不連續(xù)的點,而不是一段連續(xù)的區(qū)間。對于定點數(shù)而言,各個點在數(shù)軸上的分布是均勻的;而對于浮點數(shù)而言,各個點在數(shù)軸上的分布是不均勻的,越靠近數(shù)軸的原點,兩個相鄰數(shù)之間的距離就越近。2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.2 機器數(shù)的定點表示與浮點表示 (2)精度 浮點數(shù)雖然擴大了數(shù)的表示范圍,但這正是以降低精度為代價的,也就是數(shù)軸上各點的排列更稀疏了。2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.2 機器數(shù)的定點表示與浮點表示 (3)數(shù)的運算 浮點運算要比定點運算復(fù)雜得多。 (4)溢出處理 在定點運算時,當(dāng)運算結(jié)果超出數(shù)的表示范圍,就發(fā)生溢出。而在

28、浮點運算時,運算結(jié)果超出尾數(shù)的表示范圍卻并不一定溢出,只有當(dāng)階碼超出所能表示的范圍時,才發(fā)生溢出。2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.2 機器數(shù)的定點表示與浮點表示2.定點機與浮點機 并不是所有的計算機都具有浮點運算功能,通??梢苑譃閹讬n:(1)定點機 以定點運算為主,浮點運算是通過軟件來實現(xiàn)的。(2)定點機浮點運算部件 浮點運算部件(FPU)是專門用于對浮點數(shù)進行運算的部件。(3)浮點機 具有浮點運算指令和基本的浮點運算器。2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.2 機器數(shù)的定點表示與浮點表示 2.2.5 實用浮點數(shù)舉例 大多數(shù)計算機的浮點數(shù)采用IEEE 754標(biāo)準(zhǔn),其格式如

29、下,IEEE754標(biāo)準(zhǔn)中有三種形式的浮點數(shù)。msEm2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院 2.2 機器數(shù)的定點表示與浮點表示 以短浮點數(shù)為例討論浮點代碼與其真值之間的關(guān)系。最高位為數(shù)符位;其后是8位階碼,以2為底,階碼的偏置值為127;其余23位是尾數(shù)。為了使尾數(shù)部分能表示更多一位的有效值,IEEE754采用隱含尾數(shù)最高數(shù)位1(即這一位1不表示出來)的方法,因此尾數(shù)實際上是24位。應(yīng)注意的是,隱含的1是一位整數(shù)(即位權(quán)為20),在浮點格式中表示出來的23位尾數(shù)是純小數(shù),并用原碼表示。2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.2 機器數(shù)的定點表示與浮點表示 例1:將(100.25)10

30、轉(zhuǎn)換成短浮點數(shù)格式。 十進制數(shù)二進制數(shù) (100.25)10=(1100100.01)2 非規(guī)格化數(shù)規(guī)格化數(shù) 1100100.01=1.1001000126 計算移碼表示的階碼(偏置值階碼真值) 1111111+110=10000101 以短浮點數(shù)格式存儲該數(shù)。 符號位=0 階碼=10000101 尾數(shù)=100100010000000000000002009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.2 機器數(shù)的定點表示與浮點表示 短浮點數(shù)代碼為 0;100 0010 1;100 1000 1000 0000 0000 0000 表示為十六進制的代碼:42C88000H。 例2:把短浮點數(shù)C1C90

31、000H轉(zhuǎn)換成為十進制數(shù)。 十六進制二進制形式,并分離出符號位、階碼和尾數(shù)。 C1C90000H= 1;10000011;10010010000000000000000階碼符號位尾數(shù)2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.2 機器數(shù)的定點表示與浮點表示 計算出階碼真值(移碼偏置值) 10000011-1111111=100 以規(guī)格化二進制數(shù)形式寫出此數(shù) 1.100100124 寫成非規(guī)格化二進制數(shù)形式 11001.001 轉(zhuǎn)換成十進制數(shù),并加上符號位。 (11001.001)2=(25.125)10 所以,該浮點數(shù)=-25.1252009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.3 非數(shù)值數(shù)

32、據(jù)的表示 2.3.1 字符和字符串的表示方法1.ASCII字符編碼 常見的ASCII碼用七位二進制表示一個字符,它包括10個十進制數(shù)字(09)、52個英文大寫和小寫字母(AZ,az)、34個專用符號和32個控制符號,共計128個字符。 在ASCII碼表中,數(shù)字和英文字母都是按順序排列的,只要知道其中一個的二進制代碼,不要查表就可以推導(dǎo)出其他數(shù)字或字母的二進制代碼。2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.3 非數(shù)值數(shù)據(jù)的表示2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.3 非數(shù)值數(shù)據(jù)的表示2.字符串的存放 字符串是指一串連續(xù)的字符。例如,字符串IF X0 THEN READ (C)。 向量

33、法 在存儲器中占用一片連續(xù)的空間,每個字節(jié)存放一個字符代碼,字符串的所有元素(字符)在物理上是鄰接的。在字長為32位的存儲器,每一個主存單元可存放4個字符,整個字符串需5個主存單元。在每個字節(jié)中實際存放的是相應(yīng)字符的ASCII碼。2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院IFX0THENREA(C)D2.3 非數(shù)值數(shù)據(jù)的表示5449462020202030454541444852433E2928584E2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.3 非數(shù)值數(shù)據(jù)的表示串表法 一個存儲單元有32位,僅存放一個字符代碼。字符串的每個字符代碼后有一個鏈接字,用以指出下一個字符的存儲單元地址。串表法不

34、要求串中的各個字符在物理上相鄰,在對字符串進行刪除和插入操作時,只需修改相應(yīng)字符代碼后面的鏈接字即可。 由于鏈接字占據(jù)了存儲單元的大部分空間,使得主存的有效利用率下降(只有原來的25)。 上例中整個字符串需19個主存單元。 2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.3 非數(shù)值數(shù)據(jù)的表示2.3.2 漢字的表示1.漢字國標(biāo)碼 GB2312-80,簡稱國標(biāo)碼。該標(biāo)準(zhǔn)共收集常用漢字6763個,其中一級漢字3755個,按拼音排序;二級漢字3008個,按部首排序;另外還有各種圖形符號682個,共計7445個。 每個漢字、圖形符號都用兩個字節(jié)表示,每個字節(jié)只使用低七位編碼。2009.8北京理工大學(xué)計算機

35、科學(xué)技術(shù)學(xué)院2.3 非數(shù)值數(shù)據(jù)的表示2.漢字區(qū)位碼 區(qū)位碼將漢字編碼GB2312-80中的6763個漢字分為94個區(qū),每個區(qū)中包含94個漢字(位),區(qū)和位組成一個二維數(shù)組,每個漢字在數(shù)組中對應(yīng)一個唯一的區(qū)位碼。漢字的區(qū)位碼定長4位,前2位表示區(qū)號,后2位表示位號,區(qū)號和位號用十進制數(shù)表示,區(qū)號從01到94,位號也從01到94。例如,“中”字在54區(qū)的48位上,其區(qū)位碼為“54-48”,“國”字在25區(qū)的90位上,其區(qū)位碼為“25-90”。2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.3 非數(shù)值數(shù)據(jù)的表示 漢字區(qū)位碼并不等于漢字國標(biāo)碼,它們兩者之間的關(guān)系可用以下公式表示: 國標(biāo)碼區(qū)位碼(十六進制

36、)2020H 例如:已知漢字“春”的區(qū)位碼為“20-26”,計算它的國標(biāo)碼。 區(qū)位碼: 20 26 十進制 14H 1AH 十六進制 +20H +20H 國標(biāo)碼: 34H 3AH2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.3 非數(shù)值數(shù)據(jù)的表示3.漢字機內(nèi)碼 漢字可以通過不同的輸入碼輸入,但在計算機內(nèi)部其內(nèi)碼是唯一的。 因為漢字處理系統(tǒng)要保證中西文的兼容,當(dāng)系統(tǒng)中同時存在ASCII碼和漢字國標(biāo)碼時,將會產(chǎn)生二義性。2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.3 非數(shù)值數(shù)據(jù)的表示 例如:從主存中讀出兩個字節(jié)的內(nèi)容,它們分別為30H和21H,這時既可能是表示漢字“啊”的國標(biāo)碼,又可能是表示西文“

37、0”和“!”的ASCII碼。啊30 210!2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.3 非數(shù)值數(shù)據(jù)的表示 常用的漢字機內(nèi)碼為兩字節(jié)長的代碼,它是在相應(yīng)漢字國標(biāo)碼的每個字節(jié)最高位上加“1”。即: 漢字機內(nèi)碼漢字國標(biāo)碼8080H 例如,上述“啊”字的國標(biāo)碼是3021H,其漢字機內(nèi)碼則是B0A1H。3021+ 8080B0A12009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.3 非數(shù)值數(shù)據(jù)的表示4.漢字字形碼 漢字字形碼是指確定一個漢字字形點陣的代碼,又叫漢字字模碼或漢字輸出碼。在一個漢字點陣中,凡筆畫所到之處,記為“1”,否則記為“0”。 根據(jù)對漢字質(zhì)量的不同要求,可有1616、2424、323

38、2或4848的點陣結(jié)構(gòu)。顯然點陣越大,輸出漢字的質(zhì)量越高,每個漢字所占用的字節(jié)數(shù)也越多。2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.3 非數(shù)值數(shù)據(jù)的表示5.漢字編碼的發(fā)展 1990年頒布了繁體字的編碼標(biāo)準(zhǔn)GB12345-90,目的在于規(guī)范必須使用繁體字的各種場合,該標(biāo)準(zhǔn)共收錄6866個漢字(比GB2312多103個字),純繁體的字大概有2200余個。 1995年底推出的GBK編碼是中文編碼擴展國家標(biāo)準(zhǔn),該編碼標(biāo)準(zhǔn)兼容GB2312,共收錄漢字21003個、符號883個,并提供 1894個造字碼位,簡、繁體字融于一庫。 2000年底又頒布了GB18030大字符集標(biāo)準(zhǔn),這個標(biāo)準(zhǔn)可以涵蓋27484個

39、漢字,繁、簡字均處于同一平臺。 2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.3 非數(shù)值數(shù)據(jù)的表示2.3.3 統(tǒng)一代碼(Unicode) 隨著國際間的交流與合作的擴大,信息處理應(yīng)用對字符集提出了多文種、大字量、多用途的要求,解決問題的最佳方案是設(shè)計一種全新的編碼方法,這種方法必須有足夠的能力來表示任意一種語言里使用的所有符號,這就是統(tǒng)一代碼(Unicode)。2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.3 非數(shù)值數(shù)據(jù)的表示1編碼方式 Unicode的基本方法是用一個16位的數(shù)來表示每個符號,這種符號集可表示65536個不同的字符或符號。被稱為基本多語言平面(BMP)。這個空間已經(jīng)非常大了,但

40、設(shè)計者考慮到將來某一天它可能也會不夠用,所以采用了一種可使這種表示法使用得更遠的方法。2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.3 非數(shù)值數(shù)據(jù)的表示 當(dāng)只用2字節(jié)數(shù)來表示Unicode字符時,使用的是UCS-2編碼,但盡管如此,也允許在UCS-2文本中插入一些UCS-4字符。為此,在BMP中,保留了兩個有1024個大小的塊,這兩個塊中任何位置都不能用來表示任何符號。UCS-4的兩個16位字每個表示一個數(shù),這個數(shù)是UCS-2 BMP中1024個數(shù)值中的一個。這兩個數(shù)的組合可以表示多達1百萬多個自定義的UCS-4字符。 UCS-2:65536-21024 UCS-4 :210210=22020

41、09.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.3 非數(shù)值數(shù)據(jù)的表示 2實現(xiàn)方式 Unicode的實現(xiàn)方式不同于編碼方式。一個字符的Unicode 編碼是確定的,但是在實際傳輸過程中,由于不同系統(tǒng)平臺的設(shè)計不一定一致,以及出于節(jié)省空間的目的,對Unicode編碼的實現(xiàn)方式有所不同。Unicode的實現(xiàn)方式稱為Unicode轉(zhuǎn)換格式(Unicode Translation Format,簡稱為UTF),目前存在的UTF格式有:UTF-7,UTF-7.5,UTF-8,UTF-16以及UTF-32。 2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.4 十進制數(shù)和數(shù)串的表示 2.4.1 十進制數(shù)的編碼(二十進

42、制編碼) 用四位二進制數(shù)來表示一位十進制數(shù),稱為二進制編碼的十進制數(shù),簡稱BCD碼。 四位二進制數(shù)可以組合出16種代碼,能表示16種不同的狀態(tài),我們只需要使用其中的10種狀態(tài),就可以表示十進制數(shù)的09十個數(shù)碼,而其他的六種狀態(tài)為冗余狀態(tài)。由于可以取任意的10種代碼來表示十個數(shù)碼,所以就可能產(chǎn)生多種BCD編碼。BCD編碼既具有二進制數(shù)的形式,又保持了十進制數(shù)的特點。2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.4 十進制數(shù)和數(shù)串的表示 幾種常見的BCD碼十進制數(shù)8421碼2421碼余3碼Gray碼01234567890000000100100011010001010110011110001001

43、0000000100100011010010111100110111101111001101000101011001111000100110101011110000000001001100100110111010101011100110002009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.4 十進制數(shù)和數(shù)串的表示1.8421碼 8421碼又稱為NBCD碼,其主要特點是: 它是一種有權(quán)碼,四位二進制代碼的位權(quán)從高到低分別為8、4、2、1。 簡單直觀。每個代碼與它所代表的十進制數(shù)之間符合二進制數(shù)和十進制數(shù)相互轉(zhuǎn)換的規(guī)則。 不允許出現(xiàn)10101111。這六個代碼在8421碼中是非法碼。2009.8北京理

44、工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.4 十進制數(shù)和數(shù)串的表示2.2421碼 其主要特點是: 它也是一種有權(quán)碼,四位二進制代碼的位權(quán)從高到低分別為2、4、2、1。 它又是一種對9的自補碼。即某數(shù)的2421碼,只要自身按位取反,就能得到該數(shù)對9之補的2421碼。例如: 3的2421碼是0011。3對9之補是6,而6的2421碼是1100。 不允許出現(xiàn)01011010。這六個代碼在2421碼中是非法碼。2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.4 十進制數(shù)和數(shù)串的表示3.余3碼 其主要特點是: 這是一種無權(quán)碼,但也可看作是一種特殊的有權(quán)碼,即在8421碼的基礎(chǔ)上加+3(+0011)形成的,故稱余3碼。在

45、這種編碼中各位的“1”不表示一個固定的十進制數(shù)值,因而不直觀。 它也是一種對9的自補碼。 不允許出現(xiàn)00000010、11011111。這六個代碼在余3碼中是非法碼。2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.4 十進制數(shù)和數(shù)串的表示4格雷碼(Gray)碼 十進制Gray碼的方案有很多種,Gray碼可以避免了在計數(shù)時發(fā)生中間錯誤,所以也被稱為可靠性編碼。其主要特點是: (1) 它也是一種無權(quán)碼。 (2) 從一種代碼變到相鄰的下一種代碼時,只有一個二進制位的狀態(tài)在發(fā)生變化。 (3) 具有循環(huán)特性,即首尾兩個數(shù)的Gray碼也只有一個二進制位不同,因此Gray碼又稱為循環(huán)碼。 (4) 十進制Gra

46、y碼也有6個代碼為非法碼,視具體方案而定。 2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.4 十進制數(shù)和數(shù)串的表示2.4.2 十進制數(shù)串1.非壓縮的十進制數(shù)串 一個字節(jié)可存放一個十進制數(shù)或符號的ASCII碼。 非壓縮的十進制數(shù)串又根據(jù)符號所處的位置,分成前分隔式數(shù)字串和后嵌入式數(shù)字串兩種格式。 在前分隔式數(shù)字串中,符號位占用單獨一個字節(jié),放在數(shù)值位之前,正號對應(yīng)的ASCII碼為2BH,負號對應(yīng)的ASCII碼為2DH。00101011001011012009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院 在后嵌入式數(shù)字串中,符號位不再單獨占用一個字節(jié),正號為00H,負號為40H,嵌入到最末數(shù)值位。所以正數(shù)最

47、末位不變,負數(shù)最末位加上40H。2.4 十進制數(shù)和數(shù)串的表示 如:+256,在主存中連續(xù)四個字節(jié)存放,對應(yīng)的ASCII碼為2BH,32H,35H,36H。 如:-256,在主存中連續(xù)四個字節(jié)存放,對應(yīng)的ASCII碼為2DH,32H,35H,36H。0100000000000000 如:+256,在主存中連續(xù)三個字節(jié)存放,對應(yīng)的ASCII碼為32H,35H,36H。 如:-256,在主存中連續(xù)三個字節(jié)存放,對應(yīng)的ASCII碼為32H,35H,76H。2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.4 十進制數(shù)和數(shù)串的表示2.壓縮的十進制數(shù) 一個字節(jié)可存放兩位BCD碼表示的十進制數(shù),既節(jié)省了存儲空間

48、,又便于直接進行十進制算術(shù)運算。 在主存中,一個壓縮的十進制數(shù)串占用連續(xù)的多個字節(jié),每位數(shù)字僅占半個字節(jié),其值常用8421碼表示。符號位也占半個字節(jié),并存放在最低數(shù)值位之后,通常用CH表示正號,DH表示負號。在這種表示中,規(guī)定數(shù)字的個數(shù)加符號位之和必須為偶數(shù),當(dāng)和為奇數(shù)時,應(yīng)在最高數(shù)值位之前補一個“0”(即第一個字節(jié)的高半字節(jié)為“0000”)。110011012009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.4 十進制數(shù)和數(shù)串的表示如:+256兩個字節(jié):25H,6CH0010010101101100如:-2568三個字節(jié):02H,56H,8DH000000100101110101101000200

49、9.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.5 現(xiàn)代微機系統(tǒng)中的數(shù)據(jù)表示舉例 現(xiàn)代的微機系統(tǒng)大多采用Intel系列的微處理器,近年來,Intel的微處理器有了極大的發(fā)展,從80386到80486、奔騰(也稱為80586)、奔騰MMX、奔騰Pro(也稱為80686)、奔騰II、奔騰III,直至最新的奔騰4,形成了IA(Intel Architecture)-32結(jié)構(gòu)。下面以IA-32結(jié)構(gòu)為例,介紹現(xiàn)代微機系統(tǒng)的數(shù)據(jù)表示。 IA-32結(jié)構(gòu)的基本數(shù)據(jù)類型是字節(jié)、字、雙字(DWORD)、四字(QWORD)和雙四字(DQWORD)。2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.5 現(xiàn)代微機系統(tǒng)中的數(shù)據(jù)表示舉

50、例2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.5 現(xiàn)代微機系統(tǒng)中的數(shù)據(jù)表示舉例1.無符號整數(shù) 無符號整數(shù)是包含字節(jié)、字、雙字和四字的無符號的二進制數(shù)。無符號整數(shù)的范圍,對于字節(jié),從0255;對于字,從065535;對于雙字,從0232 -1;對于四字,從0264-1。 當(dāng)在主存中存儲無符號整數(shù)時,字存放在任何字節(jié)地址開始2個連續(xù)字節(jié)中;雙字存放在4個連續(xù)字節(jié)中;四字存放在8個連續(xù)的字節(jié)中。 2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.5 現(xiàn)代微機系統(tǒng)中的數(shù)據(jù)表示舉例2.帶符號整數(shù) 帶符號整數(shù)是包含字節(jié)、字、雙字和四字的帶符號的二進制定點整數(shù)。所有帶符號整數(shù)的數(shù)據(jù)類型都以補碼形式表示,符號位

51、是最高位(MSB)。正數(shù)的符號位為0,負數(shù)的符號位為1。帶符號整數(shù)的范圍,對于字節(jié),從-128+127;對于字,從-32768+32767;對于雙字,從-231+231-1;對于四字,從-263+263-1。 當(dāng)在主存中存儲帶符號整數(shù)時,字存放在2個連續(xù)字節(jié)中;雙字存放在4個連續(xù)字節(jié)中;四字存放在8個連續(xù)的字節(jié)中。 2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院 2.5 現(xiàn)代微機系統(tǒng)中的數(shù)據(jù)表示舉例3.浮點數(shù) IA-32 結(jié)構(gòu)定義和操作三種浮點數(shù)據(jù)類型:單精度浮點數(shù)(短浮點數(shù))、雙精度浮點數(shù)(長浮點數(shù))和擴展精度浮點數(shù)(臨時浮點數(shù))。 這些數(shù)據(jù)類型的格式與IEEE 754標(biāo)準(zhǔn)所規(guī)定的格式直接對應(yīng),

52、在此不再重復(fù)。2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.5 現(xiàn)代微機系統(tǒng)中的數(shù)據(jù)表示舉例4.指針數(shù)據(jù) 指針是主存單元的地址,IA-32 結(jié)構(gòu)定義了兩種類型的指針:近指針和遠指針。 近指針即32位指針,是一個32位的段內(nèi)偏移量,段內(nèi)尋址時用。 遠指針即48位指針,由16位選擇符和32位偏移量組成,用于跨段訪問。 2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.5 現(xiàn)代微機系統(tǒng)中的數(shù)據(jù)表示舉例5.串?dāng)?shù)據(jù) 串是位、字節(jié)、字或雙字的連續(xù)序列。串?dāng)?shù)據(jù)包括位串和字節(jié)串。位串是指連續(xù)的位,它能從任一字節(jié)的任一位置開始,位串長度可達232-1位。字節(jié)串包含連續(xù)的字節(jié)、字或雙字,長度為0232-1字節(jié)(4G字

53、節(jié))。 2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.5 現(xiàn)代微機系統(tǒng)中的數(shù)據(jù)表示舉例6.BCD數(shù) IA-32 結(jié)構(gòu)中所指的BCD碼實際上是指NBCD碼(即8421碼)。BCD數(shù)分成壓縮的BCD數(shù)和非壓縮的BCD數(shù)兩種。壓縮的BCD數(shù)是每個字節(jié)包含兩位十進制數(shù),其低位在30位上,高位在74位上;而非壓縮的BCD數(shù)每個字節(jié)僅包含一位十進制數(shù),在30位上。2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.6 數(shù)據(jù)校驗碼 數(shù)據(jù)校驗碼是指那些能夠發(fā)現(xiàn)錯誤或能夠自動糾正錯誤的數(shù)據(jù)編碼,又稱之為“檢錯糾錯編碼”。 任何一種編碼都由許多碼字構(gòu)成,任意兩個碼字之間最少變化的二進制位數(shù),被稱為數(shù)據(jù)校驗碼的碼距。例如

54、,用四位二進制表示16種狀態(tài),則有16個不同的碼字,此時碼距為1,即兩個碼字之間最少僅有一個二進制位不同(如0000與0001之間)。這種編碼沒有檢錯能力,因為當(dāng)某一個合法碼字中有一位或幾位出錯,就變成為另一個合法碼字了。2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.6 數(shù)據(jù)校驗碼 具有檢、糾錯能力的數(shù)據(jù)校驗碼的實現(xiàn)原理是:在編碼中,除去合法的碼字外,再加進一些非法的碼字,當(dāng)某個合法碼字出現(xiàn)錯誤時,就變成為非法碼字。合理地安排非法碼字的數(shù)量和編碼規(guī)則,就能達到糾錯的目的。例如,若用四位二進制表示八個狀態(tài),其中只有八個碼字是合法碼字,而另八個碼字為非法碼字,此時碼距為2。對于碼距2的數(shù)據(jù)校驗碼,

55、開始具有檢錯的能力。碼距越大,檢、糾錯能力就越強,而且檢錯能力總是大于或等于糾錯能力。2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.6 數(shù)據(jù)校驗碼2.6.1 奇偶校驗碼1.奇偶校驗概念 奇偶校驗碼是一種最簡單的數(shù)據(jù)校驗碼,它可以檢測出一位(或奇數(shù)位)錯誤。奇偶校驗碼的碼距等于2 。 奇偶校驗實現(xiàn)方法是:由若干位有效信息(如一個字節(jié)),再加上一個二進制位(校驗位)組成校驗碼,然后根據(jù)校驗碼的奇偶性質(zhì)進行校驗。 奇偶校驗碼(N+1位)=N位有效信息+1位校驗位2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院N位1位2.6 數(shù)據(jù)校驗碼奇偶校驗位2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院N位1位2.6 數(shù)據(jù)

56、校驗碼奇偶校驗碼2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.6 數(shù)據(jù)校驗碼 校驗位的取值(0或1)將使整個校驗碼中“1”的個數(shù)為奇數(shù)或偶數(shù),所以有兩種可供選擇的校驗規(guī)律: 奇校驗整個校驗碼(有效信息位和校驗位)中“1”的個數(shù)為奇數(shù)。 偶校驗整個校驗碼中“1”的個數(shù)為偶數(shù)。2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院CPU奇偶校驗電路主存2.6 數(shù)據(jù)校驗碼8位8位9位9位0101010101010101101010101110101010101010101101010101101010111101010111有4個1有5個1正確出錯有6個1中斷處理2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.6

57、 數(shù)據(jù)校驗碼2.簡單奇偶校驗(以奇校驗為例) (1)校驗位形成 當(dāng)要把一個字節(jié)的代碼D7D0寫入主存時,就同時將它們送往奇偶校驗邏輯電路,該電路產(chǎn)生的“奇形成”信號就是校驗位。它將與8位代碼一起作為奇校驗碼寫入主存。 若D7D0中有偶數(shù)個“1”,則“奇形成”=1, 若D7D0中有奇數(shù)個“1”,則“奇形成”=0。2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.6 數(shù)據(jù)校驗碼2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.6 數(shù)據(jù)校驗碼(2)校驗檢測 讀出時,將讀出的9位代碼(8位信息位和1位校驗位)同時送入奇偶校驗電路檢測。若讀出代碼無錯,則“奇校驗出錯”=0;若讀出代碼中的某一位上出現(xiàn)錯誤,則“奇

58、校驗出錯”=1,從而指示這個9位代碼中一定有某一位出現(xiàn)了錯誤,但具體的錯誤位置是不能確定的。2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.6 數(shù)據(jù)校驗碼3.交叉奇偶校驗 計算機在進行大量字節(jié)(數(shù)據(jù)塊)傳送時,不僅每一個字節(jié)有一個奇偶校驗位做橫向校驗,而且全部字節(jié)的同一位也設(shè)置一個奇偶校驗位做縱向校驗,這種橫向、縱向同時校驗的方法稱為交叉校驗。 第1字節(jié) 1 1 0 0 1 0 1 1 1 第2字節(jié) 0 1 0 1 1 1 0 0 0 第3字節(jié) 1 0 0 1 1 0 1 0 0 第4字節(jié) 1 0 0 1 0 1 0 1 0 1 0 0 1 1 0 0 02009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)

59、院2.6 數(shù)據(jù)校驗碼 交叉校驗可以發(fā)現(xiàn)兩位同時出錯的情況,假設(shè)第2字節(jié)的a6、a4兩位均出錯,橫向校驗位無法檢出錯誤,但是第a6、a4位所在列的縱向校驗位會顯示出錯,這與前述的簡單奇偶校驗相比要保險多了。 2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.6 數(shù)據(jù)校驗碼2.6.2 海明校驗碼 海明碼實際上是一種多重奇偶校驗,其實現(xiàn)原理是:在有效信息位中加入幾個校驗位形成海明碼,并把海明碼的每一個二進制位分配到幾個奇偶校驗組中。當(dāng)某一位出錯后,就會引起有關(guān)的幾個校驗位的值發(fā)生變化,這不但可以發(fā)現(xiàn)錯誤,還能指出錯誤的位置,為自動糾錯提供了依據(jù)。2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.6 數(shù)據(jù)校驗

60、碼 (1)編碼 一個字節(jié)由8位二進制位組成,此時N=8,K=5,故海明碼的總位數(shù)為13位,可表示為: H13 H12 H2 H1 五個校驗位P5P1對應(yīng)的海明碼位號應(yīng)分別為:H13 、H8 、H4 、H2 、H1 ,除P5 外,其余四位都滿足Pi的位號等于2i-1的關(guān)系,而P5只能放在H13上,因為它已經(jīng)是海明碼的最高位了。因此,有如下排列關(guān)系: P5 D8 D7 D6 D5 P4 D4 D3 D2 P3 D1 P2 P1 2009.8北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院2.6 數(shù)據(jù)校驗碼 各個信息位形成Pi 值的偶校驗的結(jié)果: P1=D1D2D4D5D7 P2=D1D3D4D6D7 P3=D2 D

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論