- 白中英《計算機組成原理》(第5版)筆記和課后習題詳解
- 圣才電子書
- 3437字
- 2021-06-08 15:16:11
第2章 運算方法和運算器
2.1 復習筆記
一、數據與文字的表示方法
1數據格式
(1)定點數表示方法
假設用一個n+1位的字來表示一個定點數x,xn放在最左位置,并用數值0和1分別代表正號和負號,其余位數代表它的量值,小數點根據數值大小放在相應兩個位數之間,如圖2-1所示。
圖2-1 定點數表示方法
定點格式的表示范圍為:
①若x表示純小數,即小數點在xn與xn-1之間,則0≤|x|≤1-2-n;
②若x表示純整數,即小數點在x0右側,則0≤|x|≤2n-1。
(2)浮點數的表示方法
浮點數的表示方法是在計算機的存儲單元中將數的有效數字和數的范圍分開表示,數的小數點位置隨比例因子的不同而在一定范圍自由浮動。按IEEE754標準,32位浮點數和64位浮點數的標準格式如圖2-2所示。
圖2-2 浮點數的標準格式
其中各部分含義為:
①符號位S
S是浮點數的符號位,占1位,安排在最高位,S=0表示正數,S=1表示負數。
②尾數域M
由于規格化的浮點數的尾數域最左位(最高有效位)總是1,因此尾數域所表示的值是1.M。
③階碼E
將浮點數的指數真值e變成階碼E時,應將指數e加上一個固定的偏移值127(01111111),即E=e+127。
【說明】二進制與十進制轉換規則舉例:
1111.1111=(1×23+1×22+1×21+1×20).(1×2-1+1×2-2+1×2-3+1×2-4)
(3)十進制數串的表示方法
①字符串形式
即一個字節存放一個十進制的數位或符號位,需要給出該數在主存中的起始地址和位數(串的長度),這種方式表示的十進制字符串主要用在非數值計算的應用領域中。
②壓縮的十進制數串形式
壓縮的十進制數串是用一個字節存放兩個十進制的數位,即每個數位占用4個二進制位,同時用冗余的狀態值表示正負,符號位放在數字位之后,規定數位加符號位之和必須為偶數,當和不為偶數時,應在最高數字位之前補一個0。如圖2-3所示,采用12(C)和13(D)分別表示正負。
圖2-3 壓縮的十進制數串表示
2數的機器碼表示
(1)原碼表示法
原碼的表示為符號位加上二進制數的絕對值,首位用1來表示負,用0來表示正,但它的最大缺點是加法運算復雜。真值轉換為原碼的方式:首位用0或1來表示真值的正負、其余位表示真值絕對值的二進制數。
(2)補碼表示法
若真值為正,則原碼=反碼=補碼;
若真值為負,則原碼、反碼、補碼的轉換關系為:
①原碼與反碼的轉換
符號位保持不變、其余位按位取反,如x真值為-105,則[x]原=11101001,[x]反=10010110,反碼再取反碼為原碼。
②原碼與補碼的轉換
先將原碼轉換成反碼,再在反碼末位上加1即為補碼,如x真值為-105,則[x]補=10010111,補碼再取補碼為原碼。
(3)移碼表示法
移碼通常用于表示浮點數的階碼,其目的是較為容易比較浮點數之間的大小。計算方法為:
補碼的首位取反(無論0或1)即為移碼,階碼為移碼的末位減1。
3字符與字符串的表示方法
(1)字符
計算機處理字符數據采用ASCII編碼方式,ASCII碼共有8位,最高位為0,是一個偶校驗位,如表2-1所示。
表2-1 ASCII字符編碼表
(2)字符串
字符串是指連續的一串字符,通常方式下,它們占用主存中連續的多個字節,每個字節存一個字符。當主存字由2個或4個字節組成時,在同一個主存字中,既可按從低位字節向高位字節的順序存放字符串內容,也可按從高位字節向低位字節的順序存放字符串內容。
4漢字的表示方法
(1)漢字的輸入編碼
①數字編碼;
②拼音碼;
③字形編碼。
(2)漢字內碼
一般采用兩個字節表示,同時兩個字節的最高位均規定為“1”,應用于內部處理。
(3)漢字字模碼
漢字字模碼應用于漢字的輸出。
5校驗碼
最常用的校驗碼為奇偶校驗碼,奇偶校驗位定義為
一個字傳輸前后的奇偶校驗位發生錯誤則可以表示收到的信息有誤,但其只能提供奇數個錯誤檢測,不能檢測偶數個錯誤,更不能確定錯誤信息的位置。
二、定點加減法運算
1補碼加法
補碼加法的公式是:
[x]補+[y]補=[x+y]補
【說明】由上式可知,只要求出x與y的補碼,即可求出x+y,但需注意兩點:
①符號位要參與運算;
②超過原碼位數的進位要舍掉。
2補碼減法
數用補碼表示時,減法運算的公式為
[x-y]補=[x]補-[y]補=[x]補+[-y]補
【說明】由上可知,若要求x-y,則只需求x補碼及-y補碼即可,將y的首位取反即得-y。
3溢出
(1)概述
在運算過程中如出現大于字長絕對值的現象,稱為“溢出”。
(2)檢測方法
①雙符號位法
雙符號位法即變形補碼,用兩個二進制位來表示數字的符號位,其余與補碼相同。其中用“00”表示正,用“11”表示負,也稱為模4的補碼。用變形補碼進行加減運算時有如下情況:
a.“00”:結果為正,且無溢出;
b.“11”:結果為負,且無溢出;
c.“01”:結果正溢出;
d.“10”:結果負溢出。
②單符號位法。
溢出邏輯表達式為
其中Cf為符號位產生的進位,C0為最高有效位產生的進位。
三、定點乘法運算
1機器算法方式
設x與y的原碼分別為
則乘積算法與十進制乘法相似,為
2不帶符號的陣列乘法器
不帶符號的陣列乘法器是對機器算法的基本實現,分為被加數產生部件和被加數求和部件。被加數產生部件會產生乘數和被乘數的乘積aibj,通過被加數求和部件將所有被加數求和得到結果。
3帶符號的陣列乘法器
帶符號的陣列乘法器計算步驟為:
①輸入原碼數據[x]原與[y]原;
②n位算前求補器輸出不帶符號的x與y;
③乘法陣列計算n位乘n位不帶符號的乘法陣列,輸出不帶符號的乘法結果;
④2n位算后求補器輸出帶符號x×y的原碼,得到結果。
四、定點除法運算
1原碼除法
兩個原碼表示的數相除時,商的符號由兩數的符號按位相加求得,商的數值部分由兩數的數值部分相除求得。
2恢復余數法
恢復余數法由于除法進行過程的步數不固定,因此控制比較復雜。實際中常用不恢復余數法,又稱加減交替法。
3不恢復余數法
以4位乘4位陣列除法器為例,假設有x=0.101001,y=0.111,則先求得[x]補=0.101001,[y]補=0.111,[-y]補=1.001,則除法的計算過程可描述為如圖2-4所示。
圖2-4 不恢復余數的除法步驟
五、定點運算器的組成
1概述
運算器必須要有的結構有:
①算術/邏輯運算單元;
②數據緩沖寄存器和通用寄存器;
③多路轉換器;
④數據總線等邏輯構件。
2邏輯運算
(1)邏輯數
邏輯數,是指不帶符號的二進制數。
(2)邏輯運算的內容
計算機中的邏輯運算,主要有四種:
①邏輯非運算
邏輯非運算又稱求反,常用變量上方加一橫來表示。
②邏輯加運算
對兩個數進行邏輯加,就是按位求它們的“或”,所以邏輯加又稱邏輯或,常用記號“+”來表示。
③邏輯乘運算
對兩數進行邏輯乘,就是按位求它們的“與”,所以邏輯乘又稱邏輯與,常用記號“*”來表示。
④邏輯異運算
對兩數進行邏輯異就是按位求它們的模2和,所以邏輯異又稱按位加,常用記號“⊕”來表示。
3多功能算術/邏輯運算單元(ALU)
(1)加法/減法器存在的問題
①由于串行進位,加法/減法器的運算時間很長;
②就行波進位加法器本身,它只能完成加法和減法兩種操作而不能完成邏輯操作。
(2)串行與并行加法器區別
①串行進位
串行進位又稱為行波進位,每一級進位直接依賴于前一級的進位,即進位信號是逐級形成的。其最長運算時間主要是由進位信號的傳遞時間決定的,位數越多延遲時間就越長。
②并行進位
各級進位信號同時形成,又稱為先行進位,同時進位。原理是將各級的低一級送入的進位和本級產生的進位同時送入高一級的全加器,以便它們同時形成進位信號,其主要依賴于初始進位輸入,而不依賴于低一級的進位輸入。
(3)多功能算術/邏輯運算單元(ALU)的優點
不僅具有多種算術運算和邏輯運算的功能,而且具有先行進位邏輯,從而能實現高速運算。
4內部總線
(1)按總線所處位置
①內部總線
內部總線是指CPU內各部件的連線。
②外部總線
外部總線是指系統總線,即CPU與存儲器、I/O系統之間的連線。
(2)按總線邏輯結構
①單向傳送總線
單向總線是指信息只能向一個方向傳送。
②雙向傳送總線
雙向總線是指信息可以向兩個方向傳送,既可以發送數據,也可以接收數據。
5定點運算器的基本結構
計算機的運算器大體有如下三種結構形式:
(1)單總線結構的運算器
單總線結構的運算器如圖2-5所示。其優點是電路結構簡單、但是操作速度較慢。
圖2-5 單總線結構的運算器
(2)雙總線結構的運算器
雙總線結構的運算器如圖2-6所示。結構相對復雜,但數據傳送更靈活。
圖2-6 雙總線結構的運算器
(3)三總線結構的運算器
三總線結構的運算器如圖2-7所示。其特點是ALU的兩個輸入端分別由兩條總線供給,而輸出則由第三條總線供給,因此操作速度特別快。
圖2-7 三總線結構的運算器
六、浮點運算方法和浮點運算器
1浮點加法、減法運算
浮點數加減法操作流程如圖2-8所示。
圖2-8 浮點數加減法的流程
2浮點乘法、除法運算
浮點乘除法的操作流程如圖2-9所示。
圖2-9 浮點數乘除法的操作流程