計算機組織與結構課件第2章數(shù)據(jù)的機器級表示及運算_第1頁
計算機組織與結構課件第2章數(shù)據(jù)的機器級表示及運算_第2頁
計算機組織與結構課件第2章數(shù)據(jù)的機器級表示及運算_第3頁
計算機組織與結構課件第2章數(shù)據(jù)的機器級表示及運算_第4頁
計算機組織與結構課件第2章數(shù)據(jù)的機器級表示及運算_第5頁
已閱讀5頁,還剩117頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第2章 數(shù)據(jù)的機器級表示及運算本章結構12.1 數(shù)制及轉換數(shù)制及轉換22.2 數(shù)值數(shù)據(jù)的機器表示數(shù)值數(shù)據(jù)的機器表示32.3 非數(shù)值數(shù)據(jù)的機器表示非數(shù)值數(shù)據(jù)的機器表示52.5 浮點數(shù)的運算浮點數(shù)的運算42.4 定點數(shù)的運算及實現(xiàn)定點數(shù)的運算及實現(xiàn)62.6 數(shù)據(jù)校驗碼數(shù)據(jù)校驗碼重點 1.有符號數(shù)的補碼表示 2.定點數(shù)、浮點數(shù) 3.浮點數(shù)的IEEE754標準 4.定點數(shù)的加減運算、加法器 5.浮點數(shù)的運算2.1 數(shù)制及轉換 進位計數(shù)制進位計數(shù)制 :將數(shù)字符號按序排列成數(shù)位,并遵照某種由低位到高位的進位方式計數(shù)來表示數(shù)值的方法,稱為進位計數(shù)制,簡稱計數(shù)制。 無論使用哪種進位計數(shù)制,數(shù)值的表示都包含兩個

2、基本要素:基數(shù)和位權。 一種進位計數(shù)制允許使用的基本數(shù)字符號的個數(shù)稱為這種進位計數(shù)制的基數(shù)。一般而言,K進制數(shù)的基數(shù)為K,可供選用的基本數(shù)字符號有K個,它們分別為0K-1,每個數(shù)位計滿K就向其高位進1,即“逢K進1”。 進位計數(shù)制中每位數(shù)字符號所表示的數(shù)值,等于該數(shù)字符號值乘以一個與數(shù)字符號所處位置有關的常數(shù),這個常數(shù)就稱為位權,簡稱權。 位權的大小是以基數(shù)為底、數(shù)字符號所處位置的序號為指數(shù)的整數(shù)次冪。各數(shù)字符號所處位置的序號計法為:以小數(shù)點為基準,整數(shù)部分自右向左依次為0、1、 遞增,小數(shù)部分自左向右依次為-1、-2、 遞減。* 任何進制數(shù)的值都可以表示成該進制數(shù)中各位數(shù)字符號值與相應位權乘

3、積的累加和形式,該形式稱為按權展開的多項式和。 一個K進制數(shù)(N)K,用按權展開的多項式和形式可表示為:(N)KDmKm +Dm-1Km-1 + +D1K1 +D0K0+D-1K-1 +D-2K-2 + +D-nK-n 二進制數(shù) :二進制的基數(shù)為2,只有0和1兩個數(shù)字符號,計數(shù)“逢二進一”。 用按權展開的多項式和形式可表示為: (N)2Dm2m +Dm-12m-1 + +D121 +D020+D-12-1 +D-22-2 + +D-n2-n * 計算機內部采用二進制表示,具有以下優(yōu)點:技術容易實現(xiàn)。運算規(guī)則簡單。與邏輯量吻合。 十六進制數(shù):十六進制的基數(shù)為16,由09、AF共16個數(shù)字、字母符

4、號組成。其中,09共10個數(shù)字符號含義與十進制數(shù)相同,AF共6個字母符號的值分別對應十進制數(shù)的1015,計數(shù)“逢十六進一”。 用按權展開的多項式和形式可表示為: (N)16Dm16m +Dm-116m-1 + +D1161 +D0160+D-116-1 +D-216-2 + +D-n16-n 八進制數(shù):八進制的基數(shù)為8,由07共8個數(shù)字組成,計數(shù)“逢八進一”。 用按權展開的多項式和形式可表示為: (N)8Dm8m +Dm-18m-1 + +D181 +D080+D-18-1 +D-28-2 + +D-n8-n 數(shù)制的轉換 1. 二進制數(shù)、十六進制數(shù)轉換成十進制數(shù)“加權求和法” 具體方法為:將要

5、轉換的二進制數(shù)或十六進制數(shù)表示成按權展開的多項式和的形式,然后逐項相加,所得的和值便是對應的十進制數(shù)。 2. 十進制數(shù)轉換成二進制數(shù)十進制數(shù)的整數(shù)部分采用“除2取余”法進行轉換。 具體方法為:將要轉換的十進制整數(shù)除以二進制的基數(shù)2,取商的余數(shù)作為二進制整數(shù)最低位的系數(shù)K0,繼續(xù)將商的整數(shù)部分除以2,再取商的余數(shù)作為二進制整數(shù)次低位的系數(shù)K1,這樣依次相除,直至商為0為止,最后一位余數(shù)作為二進制整數(shù)最高位的系數(shù)Kn。余數(shù)序列KnKn-1K1K0便構成了對應的二進制數(shù)。 2. 十進制數(shù)轉換成二進制數(shù)十進制的小數(shù)部分采用“乘2取整法”進行轉換。 具體方法為:將要轉換的十進制小數(shù)部分乘以二進制的基數(shù)2

6、,取積的整數(shù)部分作為二進制小數(shù)的最高位的系數(shù)K-1,繼續(xù)將積的小數(shù)部分乘以2,再取積的整數(shù)部分作為二進制小數(shù)次高位的系數(shù)K-2,這樣依次相乘,直至積的小數(shù)部分為0或達到所需精度為止,最后一位積的整數(shù)部分作為二進制小數(shù)最低位的系數(shù)K-m。積的整數(shù)部分序列0.K-1 K-2K-m+1K-m便構成了對應的二進制數(shù)。 3. 二進制數(shù)與十六進制數(shù)的相互轉換 十六進制數(shù)與二進制數(shù)存在著簡單的轉換關系,每1位十六進制數(shù)正好對應4位二進制數(shù)。 以小數(shù)點為界,整數(shù)部分向左、小數(shù)部分向右分成4位一組,各組分別用對應的一位十六進制數(shù)表示,即可得到所求的十六進制數(shù)。兩頭的分組不足4位時,在小數(shù)點左邊的高位和小數(shù)點右邊

7、的低位可用0補足。 2.2 數(shù)值數(shù)據(jù)的機器表示 所謂數(shù)據(jù)的機器數(shù)表示是指計算機硬件能夠直接表示、存儲和處理的數(shù)據(jù)形式。 數(shù)值數(shù)據(jù)是一種帶符號數(shù),即有正負之分。在計算機中,數(shù)的符號(+或-)和數(shù)的值一樣都要采用二進制0、1編碼。 對數(shù)值數(shù)據(jù)的編碼表示常用的有原碼、補碼、反碼和移碼表示等。 為了區(qū)分一般書寫時表示的數(shù)和機器中編碼表示的數(shù),我們稱前者為真值,后者為機器數(shù)。機器數(shù)包含兩部分:符號位和數(shù)值部分。1. 原碼表示法 具體表示方法是:符號位表示該數(shù)的符號,正(+)用“0”表示,負(-)用“1”表示,而數(shù)值部分保持與其真值相同。 純小數(shù)的原碼表示:設純小數(shù)的原碼形式為0.12 n,則原碼表示的定

8、義為:原 10 1-1+| 0-1 純整數(shù)的原碼表示:設純整數(shù)的原碼形式為012 n,則原碼表示的定義為:原 2n0 2n-2n +| 0-2n 原碼表示法的優(yōu)點是比較直觀、簡單易懂,但它的最大缺點是加法運算復雜。這是因為,當兩數(shù)相加時,如果是同號則數(shù)值相加;如果是異號,則要進行減法。而在進行減法運算時,還要比較絕對值的大小,然后減去小數(shù),最后還要給結果選擇恰當?shù)姆枴o@然,利用原碼作加減法運算是不太方便的。另外,原碼的零是不唯一的。 2. 補碼表示法 補碼表示法是計算機中實際采用的一種編碼方法,與原碼表示相同的是,其符號位表示該數(shù)的符號,正(+)用“0”表示,負(-)用“1”表示,但數(shù)值部分

9、有所不同。 純小數(shù)的補碼表示:設純小數(shù)的原碼形式為0.12 n,則補碼表示的定義為:補 10 2+2-| 0-1 純整數(shù)的補碼表示:設純整數(shù)的原碼形式為012 n,則補碼表示的定義為:補 2n0 2n+1 +2n+1-| 0-2n 補碼有兩條重要的性質:補碼的零是唯一的。補碼的減法可以化為加法實現(xiàn),即: X+Y補X補+Y補 X-Y補X補+-Y補 反碼表示法中,符號的表示法與原碼相同;而對于數(shù)值部分,正數(shù)的反碼與正數(shù)的原碼數(shù)值部分相同,負數(shù)的數(shù)值部分則通過將負數(shù)原碼的數(shù)值部分各位取反(0變1,1變0)得到。 3. 反碼表示法 純小數(shù)的反碼表示:設純小數(shù)的原碼形式為0.12 n,則反碼表示的定義為

10、:反 10 2-2-n +2-| 0-1 純整數(shù)的反碼表示:設純整數(shù)的原碼形式為012 n,則補碼表示的定義為:反 2n0 2n+1-1+ 0-2n 通過比較小數(shù)與整數(shù)的反碼與補碼的公式可得到:補反+2-n (0 x-1)補反+1 (0 x-2-n) 這兩個公式告訴我們,若要將一個負數(shù)用補碼表示,其方法是:符號位置1,數(shù)值部分各位變反,末位加1。4. 移碼表示法 移碼主要用于表示我們后面要講到的浮點數(shù)的階碼,而且通常表示的是純整數(shù)。 對于純整數(shù)012 n,移碼表示的定義是: 移2n+x (2nx-2-n) 定點數(shù)和浮點數(shù)定點數(shù)和浮點數(shù) 我們日常表示的數(shù)據(jù)類型主要有兩種:一是一般的數(shù)據(jù)表示形式,

11、如125、98.6等;二是科學記數(shù)法表示的數(shù)據(jù)形式,如1.25108等。這兩種數(shù)據(jù)類型對應在計算機中的表示形式就是定點數(shù)和浮點數(shù)。1. 定點數(shù)的表示方法 所謂定點數(shù)是指數(shù)據(jù)的小數(shù)點位置是固定不變的。 在計算機中,定點數(shù)主要分為兩種:一是定點整數(shù),即純整數(shù);二是定點小數(shù),即純小數(shù)。 假設用一個n+1位二進制來表示一個定點數(shù)x,其中一位0用來表示數(shù)的符號位,其余n位數(shù)代表它的數(shù)值。這樣,對于任意定點數(shù)012 n,其在機器中的定點數(shù)表示如下: 符號01 2 . . . n 數(shù)值 如果數(shù)x表示的是純小數(shù),那么小數(shù)點位于0和1之間,其數(shù)值范圍為:0 1-2-n 如果數(shù)x表示的是純整數(shù),那么小數(shù)點位于最低

12、位n 的右邊,其數(shù)值范圍為:0 2n+1-12. 浮點數(shù)的表示方法 在浮點數(shù)表示中,數(shù)據(jù)被分為兩部分:尾數(shù)和階碼。尾數(shù)表示數(shù)的有效數(shù)位,階碼則表示小數(shù)點的位置。加上符號位,浮點數(shù)據(jù)可以表示為:N(-1)SMRE 其中M是浮點數(shù)的尾數(shù),R是基數(shù),E是階碼,S是浮點數(shù)的符號位。 在計算機中表示為: 數(shù)符尾數(shù)階碼階符E0E1 E2 . . . Em SM1 M2 . . . Mn 在計算機中,基數(shù)R取2,是個常數(shù),在系統(tǒng)中是約定的,不需要表示出來; 階碼E用定點整數(shù)表示,它的位數(shù)越長,浮點數(shù)所能表示的數(shù)的范圍越大; 尾數(shù)M用定點小數(shù)表示,它的位數(shù)越長,浮點數(shù)所能表示的數(shù)的精度越高。3. 浮點數(shù)的IE

13、EE754標準 IEEE754標準從邏輯上采用三元組S,E,M表示一個浮點數(shù)N SEM N的實際值n由下列式子表示: n(-1)sm2e 其中n、s、e、m分別為N、S、E、M對應的實際數(shù)值。 IEEE754標準規(guī)定了三種浮點數(shù)格式:單精度雙精度擴展精度。 單精度浮點數(shù)N共32位,其中S占1位,E占8位,M占23位。 22 030 2331SEM 雙精度浮點數(shù)N共64位,其中S占1位,E占11位,M占52位。 51 062 5263SEMIEEE754標準1、浮點數(shù)的規(guī)格化表示:M雖然是23位或者52位,標準規(guī)定小數(shù)點左邊還有一個隱含位1,也就是說m=1.M,這一位并不需要存儲,卻可以提高一位

14、尾數(shù)的精度。【 1 E254或1 E2046】2、階碼:e是采用移碼表示的整數(shù),e值計算公式如下: e=E-127, 對單精度浮點數(shù)來說,k=8, e=E-1023;對雙精度浮點數(shù)來說,k=11。3、機器零:當一個浮點數(shù)的尾數(shù)為 0,不論其階碼為何值,或者當階碼的值遇到比它能表示的最小值還小時,不管其尾數(shù)為何值,計算機都把該浮點數(shù)看成零值。當階碼E為全0且尾數(shù)M也為全0時,表示的真值為零,結合符號位S為0或1,有正零和負零之分。4、無窮大:當階碼E為全1,且尾數(shù)M也為全0時,表示的真值為無窮大,結合符號位S為0或1,有正無窮和負無窮之分。 【例2.10】將十進制數(shù)43.6875轉換成754標準

15、的單精度浮點數(shù)的二進制存儲格式。 解:轉換成二進制數(shù)得: (43.6875)10=(101011.1011)2。 =1.01011101125,于是得到:S=0,E=5+127=132,M=010111011。 最后得到單精度浮點數(shù)的二進制存儲格式為: 0 10000100 01011101100000000000000如果寫成十六進制:42EC0000 【例2.11】若浮點數(shù)的IEEE754標準存儲格式為(41360000)16,求其浮點數(shù)的十進制值。 解:將(41360000)16展開為二進制形式是: 0 10000010 01101100000000000000000 符號位S=0,指數(shù)

16、e=E-127=3 尾數(shù)m=1.M=1.01101100000000000000000=1.011011 于是有:=(-1)sm2e =+1.01101123=+1011.011=(11.375)10 2.3 非數(shù)值數(shù)據(jù)的機器表示 二進制編碼的十進制數(shù) 字符編碼 漢字的表示方法 1. 二進制編碼的十進制數(shù) 現(xiàn)代計算機除了能將我們日常生活中的十進制數(shù)轉換為上述二進制形式表示和處理外,還能直接使用二進制編碼的方式表示十進制數(shù)位,常用的表示方法就是二進制編碼的十進制數(shù)(Binary-Coded Decimal),簡稱BCD碼。 BCD碼是將一個十進制數(shù)的每個十進制數(shù)字編碼成一個4位的二進制數(shù),并且使

17、用了3個4位二進制編碼表示符號,其中1111表示無符號數(shù),1100表示正數(shù),而1101則表示負數(shù)。 十進制數(shù)字BCD編碼01234567890000000100100011010001010110011110001001正數(shù)負數(shù)無符號數(shù)110011011111 因為一個十進制數(shù)字的BCD編碼只占一個4位的空間,所以在存儲一個十進制數(shù)串時可以采取一種稱為壓縮十進制數(shù)串形式表示,具體方法:十進制數(shù)串的每個數(shù)字的BCD碼連續(xù)存儲,最后4位存儲符號。 【例2.12】利用壓縮的BCD編碼存儲-1265。 解:-1265的BCD編碼為:0001 0010 0110 0101 使用三個字節(jié)存儲,其中在最低位

18、數(shù)字后面加上符 號,在高位補0,則有:0000 00010010 01100101 11012. 字符編碼字符編碼 EBCDIC碼 ASCII碼 統(tǒng)一字符編碼標準 Unicode 2.4 定點數(shù)的運算及實現(xiàn)定點數(shù)的運算及實現(xiàn) 定點數(shù)的加減運算 定點數(shù)的乘法運算 定點數(shù)的除法運算1. 定點數(shù)的加減運算定點數(shù)的加減運算 在機器中,定點數(shù)是以補碼形式表示的,因此,我們這里主要介紹補碼的加減運算。 補碼的加法運算 根據(jù)補碼的性質,我們可以得出以下結論:用補碼表示的兩個數(shù)相加,其結果仍為補碼;+ y 補補+ y 補;- y 補補+- y 補= 補- y 補;符號位與數(shù)值位一同參加運算。證明+ y 補補+

19、 y 補以純小數(shù)的補碼定義為例證明:補 10 2+2-| 0 -1由+ y 補補+ y 補推出- y 補補+- y 補= 補- y 補; 舉例補碼的減法運算 根據(jù)補碼的性質,我們還可以得出以下結論:用補碼表示的兩個數(shù)相減,其結果仍為補碼;- y 補補+ -y 補;符號位與數(shù)值位一同參加運算。 舉例 補碼的減法運算可以轉換為加法實現(xiàn),所以計算時可以先求出-y的補碼,再做加法運算,這樣在機器中實現(xiàn)時,只需一個加法器即可完成加、減法運算,這也是計算機中使用補碼表示的主要原因之一。 加減運算的溢出判別 我們先來看兩個補碼運算的例子。 【例2.18】設0.1101,y0.0110,則有: + y 補補+

20、 y 補0.1101補+0.0110補0.1101+0.01101.0011 兩個正數(shù)相加結果怎么變成了負數(shù)? 【例2.19】設-0.1011,y-0.1001,則有: + y 補補+ y 補-0.1011補+-0.1001補1.0101+1.01110.1100 兩個負數(shù)相加結果怎么變成了正數(shù)? 其實,在計算機中,任何種類的數(shù)據(jù)表示由于受到計算機字長的限制,其表示的數(shù)據(jù)都是有一定范圍的。 例如,8位二進制補碼表示的純整數(shù)的范圍是-128+127(即1000000001111111);16位二進制補碼表示的純整數(shù)的范圍是-4096+4095(即1000000000000000011111111

21、1111111)。 如果運算結果超出了表示范圍,則稱為產生了溢出。 其中,若運算結果比最大的正數(shù)還大,則為正溢出;若運算結果比最小的負數(shù)還小,則為負溢出。 下面介紹三種溢出的判別方法。 (1)符號位判別法 當符號相同的兩個數(shù)相加時,如果結果的符號與相加數(shù)的符號不同,則為溢出。 溢出表達式:Vx0 y0 z0 +x0 y0 z0其中 x0、y0分別為兩個相加數(shù)的符號位,z0為運算結果的符號位, 若V1,則說明產生了溢出;若V0,則無溢出。x0 y0 z0 x0 y0 z0V圖2-5 符號位判別法(2)進位位判別法 當兩個補碼相加時,如果符號位和數(shù)值部分最高位的進位位C0、C1不同,則為溢出,相同

22、則未溢出。 溢出表達式為:VC0 C1其中C0、C1分別為結果的符號位和數(shù)值部分最高位的進位位 。(3)雙符號位法 兩個相加數(shù)均使用兩位符號位,00表示正數(shù),11表示負數(shù)。 當兩個正數(shù)相加時,若結果的兩個符號位相同,則無溢出;若不同,則有溢出,且為01時是正溢出,為10時是負溢出。 溢出表達式為:Vz0 z0 其中z0、z0為運算結果的兩個符號位。 若V1,則說明產生了溢出;若V0,則無溢出。 進位位判別法和雙符號位判別法的邏輯實現(xiàn)分別如下圖示。二進制補碼加法器的實現(xiàn)1 1、全加器、全加器 * *全加器輸出的邏輯表達式:全加器輸出的邏輯表達式:真值表真值表A Ai iB Bi iC Ci-1i

23、-1進位進位C Ci i全加和全加和S Si i0 00 01 11 10 01 10 01 10 00 00 00 00 00 00 01 10 01 11 10 00 00 01 11 10 01 10 01 11 11 11 11 10 01 11 11 11 10 00 01 11iii1ii1iii1ii1iii1iii1iii1iii1iiiiCBA)CBCB(A)CBC(BA CBACBACBACBAS1iiiii1iii1iii1iii1iiii)CB(ABACBACBACBACBACS Si iC Ci iA Ai i B Bi iC Ci-1i-11 1& &=1=1=1=

24、1& &2 2、并行加法器、并行加法器 * *組成:組成:n n個全加器、進位鏈;個全加器、進位鏈; * *進位輔助函數(shù):進位輔助函數(shù): 全加器進位邏輯全加器進位邏輯1iii1iiiiiiCPG)CB(ABAC 產生函數(shù)產生函數(shù)G Gi i G Gi i=A=Ai iB Bi i,進位不依賴于,進位不依賴于C Ci-1i-1產生產生( (本地產生本地產生) )iiiBAP 傳遞函數(shù)傳遞函數(shù)P Pi i ,進位依賴于,進位依賴于C Ci-1i-1產生產生( (傳遞傳遞C Ci-1i-1) )S S0 0C C0 0A A0 0 B B0 0C C-1-1C Cn-2n-2S Sn-1n-1 C

25、Cn-1n-1A An-1 n-1 B Bn-1n-1C Cn-3n-3S Sn-2n-2 A An-2 n-2 B Bn-2n-2A補=An-1 An-2 A1 A0 B補=Bn-1 Bn-2 B1 B0 S補=A補+ B補3 3、串行進位的并行加法器、串行進位的并行加法器 * *串行進位邏輯形成:串行進位邏輯形成: =G=G0 0+P+P0 0C C-1-1 =G=G1 1+P+P1 1 =G=Gn-1n-1+P+Pn-1n-1C C0 0C Cn-1n-1不能同時形成不能同時形成 * *加法器特點:加法器特點:進位電路簡單,進位電路簡單, 運算速度慢運算速度慢(T(T加法加法=nt)=n

26、t)S S0 0C C0 0A A0 0 B B0 0C C-1-1C Cn-2n-2S Sn-1n-1 C Cn-1n-1A An-1 n-1 B Bn-1n-1C Cn-3n-3S Sn-2n-2 A An-2 n-2 B Bn-2n-24 4、行波進位并行加法器(、行波進位并行加法器(先行進位)先行進位) * *先行進位邏輯形成:先行進位邏輯形成: 其中其中G Gi i=A=Ai iB Bi i,P Pi i=A=Ai i B Bi i =G=G0 0+P+P0 0C C-1-1 =G=G1 1+P+P1 1C C0 0 = = G G1 1+P+P1 1G G0 0+P+P1 1P P

27、0 0C C-1-1 =G=G2 2+P+P2 2C C1 1 = = G G2 2+P+P2 2G G1 1+P+P2 2P P1 1G G0 0+P+P2 2P P1 1P P0 0C C-1-1 =G=G3 3+P+P3 3C C2 2 = = G G3 3+P+P3 3G G2 2+P+P3 3P P2 2G G1 1+P+P3 3P P2 2P P1 1G G0 0+P+P3 3P P2 2P P1 1P P0 0C C-1-1 * *先行進位產生電路:先行進位產生電路:C C0 0C C3 3可同時形成可同時形成1 1C C-1-11 11 11 1P P0 0G G0 0P P1

28、 1G G1 1P P2 2G G2 2P P3 3G G3 3C C0 0C C1 1C C2 2C C3 34 4位先行進位加法器組成:位先行進位加法器組成:4 4位先行進位產生電路位先行進位產生電路S S3 3A A3 3 B B3 3G G3 3 P P3 3C C2 2S S2 2A A2 2 B B2 2G G2 2 P P2 2C C1 1S S1 1A A1 1 B B1 1G G1 1 P P1 1C C0 0S S0 0A A0 0 B B0 0G G0 0 P P0 0C C-1-1C C3 3 * *n n位先行進位加法器組成:位先行進位加法器組成:1616位先行進位產

29、生電路位先行進位產生電路S S1515A A1515 B B1515G G1515 P P1515C C1414S S1 1A A1 1 B B1 1G G1 1 P P1 1C C0 0S S0 0A A0 0 B B0 0G G0 0 P P0 0C C-1-1C C1515 全并行先行進位全并行先行進位加法器加法器組內并行、組間串行進位組內并行、組間串行進位加法器加法器4 4位先行進位先行進位加法器位加法器S S3 30 0A A3 30 0 B B3 30 04 4位先行進位先行進位加法器位加法器S S7 74 4C C7 7A A7 74 4 B B7 74 44 4位先行進位先行進

30、位加法器位加法器S S11118 8A A11118 8 B B11118 84 4位先行進位先行進位加法器位加法器S S15151212A A15151212 B B15151212C C3 3C C-1-1C C1111C C1515 組內并行、組間并行進位組內并行、組間并行進位加法器加法器4 4位先行進位先行進位加法器位加法器S S15151212G G3 3* * P P3 3* *C C-1-1C C1515A A15151212 B B151512124 4位先行進位產生電路位先行進位產生電路4 4位先行進位先行進位加法器位加法器S S11118 8G G2 2* * P P2 2

31、* *A A11118 8 B B11118 84 4位先行進位先行進位加法器位加法器S S7 74 4G G1 1* * P P1 1* *A A7 74 4 B B7 74 44 4位先行進位先行進位加法器位加法器S S3 30 0G G0 0* * P P0 0* *A A3 30 0 B B3 30 0C C1515C C1111C C7 7C C3 3 其中其中C C3 3= = G G3 3+P+P3 3G G2 2+P+P3 3P P2 2G G1 1+P+P3 3P P2 2P P1 1G G0 0 + + P P3 3P P2 2P P1 1P P0 0 C C-1-1= =

32、 G G0 0* * + + P P0 0* * C C-1-1 能同時實現(xiàn)補碼加、減法的加法器如圖所示。 0101010101-C1C2Ci+1Cnx0 x1xixn-1xnFa0MUXMUXMUXMUXMUXy0y1yiyn-1ynFa1FaiFan-1FanCn+1+寄存器B寄存器A 行波進位加法器邏輯關系清晰,電路實現(xiàn)簡單。但由于其進位位是由低到高一位一位串行生成,因此,電路延遲時間長,運算速度慢。一種改進的方法是采用先行進位法,具體做法是:將n位相加的二進制位進行分組,每若干位分成一組,組內所有位的進位位同時生成,組間則仍然是串行進位。通過這種多級分組的方法,可以大大提高加法器的運算

33、速度。 十進制加法器的實現(xiàn) 二進制編碼的十進制數(shù)可以直接運算。但要注意的是,其運算結果需要進行修正。 具體修正規(guī)則是:如果兩個一位BCD碼相加之和小于或等于(1001)2,即十進制9,則不需要修正;如相加之和大于(1001)2,則需要進行加6修正,并向高位進位。 十進制加法器可在二進制加法器的基礎上加上適當?shù)摹靶U边壿媮韺崿F(xiàn),如圖是實現(xiàn)一位十進制BCD碼加法的單元電路。 2. 定點數(shù)的乘法運算定點數(shù)的乘法運算 原碼一位乘法原碼乘法是將符號位與數(shù)值部分分開進行運算,運算結果的數(shù)值部分是兩相乘數(shù)的數(shù)值部分之積,而符號位則是兩相乘數(shù)的符號位的異或。設原x0 x1 x2 xn, y 原y0 y1 y

34、2 yn,則xy原(x0 y0)|(x1 x2 xn)(y1 y2 yn) 在計算機中實現(xiàn)乘法運算時,必須對手工過程進行如下調整:(1)硬件實現(xiàn)時需要使用三個寄存器分別存放乘數(shù)、被乘數(shù)和部分積。(2)機器中的運算器一般一次只能完成兩個數(shù)的相加,手工一次性相加可以改為逐次加。每次得到一個部分積,最后一次的部分積即為乘積。(3)手工計算時,每次得到的位積都相對上一次位積左移一位,在計算機實現(xiàn)時,可以每次將部分積右移一位,部分積的最低位直送即可。(4)部分積右移時,將乘數(shù)寄存器同時右移一位,這樣一方面可以每次根據(jù)乘數(shù)寄存器的值決定本次位積的值(若最低位為1,則本次位積為被乘數(shù);若最低位為0,則本次位

35、積為0);另一方面,乘數(shù)寄存器的最高位每次可以接受部分積右移出來的一位。(5)運算完成后,部分積寄存器和乘數(shù)寄存器中分別存放的是最后乘積的高半部和低半部。 實現(xiàn)原碼一位乘的邏輯電路原理框圖 補碼一位乘法 與原碼一位乘不同的是,補碼一位乘的兩個乘數(shù)和被乘數(shù)的符號位是直接參加運算的。下面我們介紹一種布斯乘法,該算法是由布斯(Booth)最早提出的,故以其名字命名。陣列乘法器3. 定點數(shù)的除法運算定點數(shù)的除法運算 原碼一位除法原碼除法是將符號位與數(shù)值部分分開進行運算,商的數(shù)值部分是兩相除數(shù)的數(shù)值部分相除之后的結果,而商的符號位則是兩相除數(shù)的符號位的異或。設原x0 x1 x2 xn, y 原y0 y1

36、 y2 yn,則x/y原(x0 y0)|(x1 x2 xn)/(y1 y2 yn) 補碼一位除法的運算規(guī)則若下:(1)如果被除數(shù)與除數(shù)同號,用被除數(shù)減去除數(shù);若兩數(shù)異號,用被除數(shù)加上除數(shù)。如果所得余數(shù)與除數(shù)同號,則商1,否則商0,此即商的符號位。(2)求商的數(shù)值部分。如果上次商1,將余數(shù)左移一位后減去除數(shù);如果上次商0,將余數(shù)左移一位后加上余數(shù)。然后判斷本次操作后的余數(shù),如果余數(shù)與除數(shù)同號,則商1,否則商0。(3)如此重復執(zhí)行n-1次(設數(shù)值部分有n位)。 陣列除法器2.5 浮點數(shù)的運算 二進制浮點數(shù)的表示形式為:NM2E其中,M為浮點數(shù)的尾數(shù),一般為純小數(shù),在機器中通常采用補碼表示;E為階碼

37、,為純整數(shù),用補碼或移碼表示。 浮點數(shù)的運算實際上最終轉化為定點數(shù)的運算來完成。但由于浮點數(shù)表示的特殊性,其運算又比單純的定點數(shù)運算更復雜。 1. 浮點數(shù)的加減運算 浮點數(shù)的加減運算一般由以下五個步驟完成:對階尾數(shù)運算結果規(guī)格化舍入處理溢出判斷對階 設兩浮點數(shù)X、Y進行加減運算,其中 XMx2Ex,YMy2Ey 所謂對階是指將兩個進行運算的浮點數(shù)的階碼對齊的操作。 對階的具體方法是:首先求出兩浮點數(shù)階碼的差,即EEx-Ey,將小階碼加上E,使之與大階碼相等,同時將小階碼對應的浮點數(shù)的尾數(shù)右移相應位數(shù),以保證該浮點數(shù)的值不變。 幾點注意:(1)對階的原則是小階對大階,之所以這樣做是因為若大階對小

38、階,則尾數(shù)的數(shù)值部分的高位需移出,而小階對大階移出的是尾數(shù)的數(shù)值部分的低位,這樣損失的精度更小。(2)若E0,說明兩浮點數(shù)的階碼已經相同,無需再做對階操作了。(3)采用補碼表示的尾數(shù)右移時,符號位保持不變。(4)由于尾數(shù)右移時是將最低位移出,會損失一定的精度,為減少誤差,可先保留若干移出的位,供以后舍入處理用。尾數(shù)運算 尾數(shù)運算就是進行完成對階后的尾數(shù)相加減。這里采用的就是我們前面講過的純小數(shù)的定點數(shù)加減運算。 結果規(guī)格化 在機器中,為保證浮點數(shù)表示的唯一性,浮點數(shù)在機器中都是以規(guī)格化形式存儲的。對于IEEE754標準的浮點數(shù)來說,就是尾數(shù)必須是1.M的形式。 規(guī)格化操作包括左規(guī)和右規(guī)兩種情況

39、。左規(guī)操作:將尾數(shù)左移,同時階碼減值,直至尾數(shù)成為1.M的形式。右規(guī)操作:將尾數(shù)右移1位,同時階碼增1,便成為規(guī)格化的形式了。要注意的是,右規(guī)操作只需將尾數(shù)右移一位即可,這種情況出現(xiàn)在尾數(shù)的最高位(小數(shù)點前一位)運算時出現(xiàn)了進位,使尾數(shù)成為10.xxxx或11.xxxx的形式。舍入處理 浮點運算在對階或右規(guī)時,尾數(shù)需要右移,被右移出去的位會被丟掉,從而造成運算結果精度的損失。為了減少這種精度損失,可以將一定位數(shù)的移出位先保留起來,稱為保護位,在規(guī)格化后用于舍入處理。 IEEE754標準列出了四種可選的舍入處理方法:(1)就近舍入(round to nearest) :這是標準列出的默認舍入方式

40、,其含義相當于我們日常所說的“四舍五入”。例如,對于32位單精度浮點數(shù)來說,若超出可保存的23位的多余位大于等于10001,則多余位的值超過了最低可表示位值的一半,這種情況下,舍入的方法是在尾數(shù)的最低有效位上加1;若多余位小于等于01111,則直接舍去;若多余位為10000,此時再判斷尾數(shù)的最低有效位的值,若為0則直接舍去,若為1則再加1。(2)朝+舍入(round toward +) :對正數(shù)來說,只要多余位不為全0,則向尾數(shù)最低有效位進1;對負數(shù)來說,則是簡單地舍去。(3)朝-舍入(round toward -) :與朝+舍入方法正好相反,對正數(shù)來說,只是簡單地舍去;對負數(shù)來說,只要多余位

41、不為全0,則向尾數(shù)最低有效位進1。(4)朝0舍入(round toward 0) 即簡單地截斷舍去。溢出判斷 浮點數(shù)的溢出是以其運算結果的階碼的值是否產生溢出來判斷的。 若階碼的值超過了階碼所能表示的最大正數(shù),則為上溢。若此時浮點數(shù)為正數(shù),則為正上溢,記為+;若浮點數(shù)為負數(shù),則為負上溢,記為-; 若階碼的值超過了階碼所能表示的最小負數(shù),則為下溢。若此時浮點數(shù)為正數(shù),則為正下溢;若浮點數(shù)為負數(shù),則為負下溢;正下溢和負下溢都作為0處理。 定點數(shù)和浮點數(shù)表示范圍比較機器零最大正數(shù)最小負數(shù)最大負數(shù) 0 最小正數(shù)負下溢 正下溢下溢上溢最大正數(shù)0最小負數(shù)負定點數(shù)正定點數(shù)負浮點數(shù)正浮點數(shù)負上溢正上溢定點數(shù)表

42、示范圍浮點數(shù)表示范圍 實現(xiàn)浮點運算的加法器邏輯電路原理框圖 2. 浮點數(shù)的乘除運算 浮點數(shù)的乘除運算比加減運算少了對階這一步,一般由以下五個步驟完成:階碼相加/減尾數(shù)相乘/除結果規(guī)格化舍入處理溢出判斷2.6 數(shù)據(jù)校驗碼 數(shù)據(jù)在計算機系統(tǒng)中的生成、處理、存儲和傳輸過程中都可能會發(fā)生錯誤。 從物理差錯的種類上講,主要分為隨機錯和突發(fā)錯。隨機錯是指由于硬件設備或物理傳輸介質自身原因產生的差錯,這種錯誤是隨機發(fā)生的,往往是一次發(fā)生一位或若干位的錯誤。突發(fā)錯是指由于外界的干擾產生的差錯,這種錯誤是突發(fā)的,往往是一次發(fā)生大片數(shù)據(jù)的差錯。 解決差錯的常用方法是數(shù)據(jù)編碼,即對要存儲或傳輸?shù)臄?shù)據(jù)進行編碼,使之具

43、有檢測或糾正差錯的能力,這種編碼稱為數(shù)據(jù)校驗碼。 數(shù)據(jù)校驗碼的基本思想是:在數(shù)據(jù)位的基礎上,額外增加若干位的冗余位(又稱校驗位),使編碼后的數(shù)據(jù)符合某種規(guī)律,符合這種規(guī)律的編碼屬于合法碼,不符合這種規(guī)律的編碼屬于非法碼,通過檢測一個數(shù)據(jù)編碼的合法性,就可以判斷差錯的發(fā)生,進一步進行差錯的定位,從而糾正錯誤。 具有檢測錯誤能力的編碼稱為檢錯碼,具有糾正錯誤能力的編碼稱為糾錯碼。1. 奇偶校驗碼 奇偶校驗碼是一種最簡單的數(shù)據(jù)校驗碼,是奇校驗碼和偶校驗碼的統(tǒng)稱,屬于檢錯碼。 編碼規(guī)則:在數(shù)據(jù)位的基礎上增加一位冗余位,使數(shù)據(jù)編碼碼的合法碼中1的個數(shù)恒為奇數(shù)或偶數(shù)。若為奇數(shù),則為奇校驗碼;若為偶數(shù),則為

44、偶校驗碼。 從檢糾錯能力上講,奇偶校驗碼可以檢測發(fā)生奇數(shù)位錯情況,但不能糾錯。由于同時發(fā)生多位錯的概率遠比發(fā)生一位錯的低,所以一般認為奇偶校驗碼具有檢測發(fā)生一位錯的能力,但不能進行錯誤定位,即不能糾正錯誤。 設8位數(shù)據(jù)位DD1D2D3D4D5D6D7D8,則偶校驗編碼為D1D2D3D4D5D6D7D8 P,其中偶校驗位P為D1 D2 D3 D4 D5 D6 D7 D8偶校驗檢測位P*為D1 D2 D3 D4 D5 D6 D7 D8 P 若P*0,則無錯;若P*1,則有錯。 偶校驗位的生成和偶校驗的檢測電路。2. 海明校驗碼 海明校驗碼是由Richard Hamming于1950年提出的,屬于糾錯碼,它不僅具有檢錯能力,而且能進行錯誤定位,從而糾正錯誤。 海明校驗碼的基本思想是:對原數(shù)據(jù)碼按某種規(guī)律分成若干組,每組安排一個校驗位,進行

溫馨提示

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

評論

0/150

提交評論