版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、計(jì)算機(jī)組成原理,教材:白中英,計(jì)算機(jī)組成原理(第四版),科學(xué)出版社,第一章 計(jì)算機(jī)系統(tǒng)概論 第二章 運(yùn)算方法和運(yùn)算器 第三章 內(nèi)部存儲(chǔ)器 第四章 指令系統(tǒng) 第五章 中央處理器 第六章 總線系統(tǒng) 第七章 外圍設(shè)備 第八章 輸入輸出系統(tǒng) 第九章 操作系統(tǒng)支持 第十章 安騰高性能處理機(jī)體系結(jié)構(gòu),目錄,第二章 運(yùn)算方法和運(yùn)算器,重點(diǎn):數(shù)據(jù)表示 簡(jiǎn)介:運(yùn)算方法和運(yùn)算器 補(bǔ)充:差錯(cuò)編碼,二進(jìn)制數(shù),便于計(jì)算機(jī)存儲(chǔ)及物理實(shí)現(xiàn) 特點(diǎn):逢二進(jìn)一,由0和1兩個(gè)數(shù)碼組成,基數(shù)為2,各個(gè)位權(quán)以2k表示 二進(jìn)制數(shù): anan-1a1a0.b1b2bm an2nan-12n-1a121a020 b12-1b22-2bm2-
2、m 其中ai,bj非0即1,十六進(jìn)制數(shù),用于表達(dá)二進(jìn)制數(shù),相互轉(zhuǎn)換簡(jiǎn)單 基數(shù)16,逢16進(jìn)位,位權(quán)為16k,16個(gè)數(shù)碼: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F(xiàn) 十六進(jìn)制數(shù): anan-1a1a0.b1b2bm an16nan-116n-1a1161 a0160 b116-1b216-2bm16-m 其中ai,bj是0F中的一個(gè)數(shù)碼,二進(jìn)制數(shù)或十六進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù),方法:按權(quán)展開 二進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù) 0011.1010B 12112012-102-212-3 3.625 十六進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù) 1.2H 11602161 1.125,十六進(jìn)制數(shù)用后綴字母H,二
3、進(jìn)制數(shù)用后綴字母B,十進(jìn)制整數(shù)轉(zhuǎn)換為二或十六進(jìn)制數(shù),整數(shù)部分轉(zhuǎn)換:用除法 十進(jìn)制數(shù)整數(shù)部分不斷除以基數(shù)2或16,并記下余數(shù),直到商為0為止 由最后一個(gè)余數(shù)起逆向取各個(gè)余數(shù),則為轉(zhuǎn)換成的二進(jìn)制和十六進(jìn)制數(shù) 12601111110B 1267EH,十進(jìn)制小數(shù)轉(zhuǎn)換為二或十六進(jìn)制數(shù),小數(shù)部分轉(zhuǎn)換:用乘法 分別乘以各自的基數(shù),記錄整數(shù)部分,直到小數(shù)部分為0為止 0.81250.1101B 0.81250.DH 小數(shù)轉(zhuǎn)換會(huì)發(fā)生總是無(wú)法乘到為0的情況 可選取一定位數(shù)(精度) 將產(chǎn)生無(wú)法避免的轉(zhuǎn)換誤差,十六進(jìn)制數(shù)的加減運(yùn)算,二進(jìn)制和十六進(jìn)制數(shù)之間具有對(duì)應(yīng)關(guān)系 整數(shù)從左向右 小數(shù)從右向左 每4個(gè)二進(jìn)制位對(duì)應(yīng)一個(gè)
4、十六進(jìn)制位 00111010B3AH,F(xiàn)2H11110010B 十六進(jìn)制數(shù)的加減運(yùn)算類似十進(jìn)制 逢16進(jìn)位1,借1當(dāng)16 23D9H94BEHB897H A59FH62B8H42E7H,真值和機(jī)器數(shù),真值:現(xiàn)實(shí)中真實(shí)的數(shù)值 機(jī)器數(shù):計(jì)算機(jī)中用0和1數(shù)碼組合表達(dá)的數(shù)值 定點(diǎn)數(shù):固定小數(shù)點(diǎn)的位置表達(dá)數(shù)值的機(jī)器數(shù) 定點(diǎn)整數(shù):將小數(shù)點(diǎn)固定在機(jī)器數(shù)的最右側(cè)表達(dá)的整數(shù) 定點(diǎn)小數(shù):將小數(shù)點(diǎn)固定在機(jī)器數(shù)的最左側(cè)表達(dá)的小數(shù) 浮點(diǎn)數(shù):小數(shù)點(diǎn)浮動(dòng)表達(dá)的實(shí)數(shù) 無(wú)符號(hào)數(shù):只表達(dá)0和正整數(shù)的定點(diǎn)整數(shù) 有符號(hào)數(shù):表達(dá)負(fù)整數(shù)、0和正整數(shù)的定點(diǎn)整數(shù) 符號(hào)位需要占用一個(gè)位,常用機(jī)器數(shù)的最高位 0表示正數(shù)、1表示負(fù)數(shù) 具有原碼、反
5、碼、補(bǔ)碼、移碼,沒(méi)有符號(hào)位,使用全部字長(zhǎng)來(lái)表示數(shù)值大小 字長(zhǎng)N8時(shí),編碼:0000000011111111 取值范圍:0255(28-1) 字長(zhǎng)N16時(shí),編碼:0000FFFFH 取值范圍:065535(216-1) 字長(zhǎng)N32時(shí),編碼:00000000FFFFFFFFH 取值范圍:0232-1,無(wú)符號(hào)數(shù)的表示,2.1 數(shù)據(jù)與文字的表示方法,2.1.1 數(shù)據(jù)格式 2.1.2 數(shù)的機(jī)器碼表示 2.1.3 字符與字符串的表示方法 2.1.4 漢字的表示方法 2.1.5 校驗(yàn)碼,計(jì)算機(jī)中常用的數(shù)據(jù)表示格式有兩種,一是定點(diǎn)格式,二是浮點(diǎn)格式 定點(diǎn)格式容許的數(shù)值范圍有限,但要求的處理硬件比較簡(jiǎn)單 浮點(diǎn)格
6、式容許的數(shù)值范圍很大,但要求的處理硬件比較復(fù)雜,2.1.1 數(shù)據(jù)格式,定點(diǎn)數(shù)的表示方法,定點(diǎn)表示:約定機(jī)器中所有數(shù)據(jù)的小數(shù)點(diǎn)位置是固定不變的。通常將數(shù)據(jù)表示成純小數(shù)或純整數(shù) 定點(diǎn)數(shù)xx0 x1x2xn 在定點(diǎn)機(jī)中表示如下(x0表示符號(hào)位,0代表正號(hào),1代表負(fù)號(hào)),定點(diǎn)整數(shù)的小數(shù)點(diǎn)位置,定點(diǎn)小數(shù)的小數(shù)點(diǎn)位置,例: X=+1010110.,純整數(shù):X = 01010110.,正數(shù),符號(hào)位取0,Y= - 1101001.,純整數(shù):Y = 11101001. (原碼),負(fù)數(shù),符號(hào)位取1,X=+0.11011,Y=-0.10101,符號(hào)位取0,純小數(shù):X = 0.11011,符號(hào)位取1,純小數(shù):X =
7、1.10101 (原碼),定點(diǎn)整數(shù)的表示范圍,純整數(shù)的表示范圍為(x1x2xn各位均為0時(shí)最小;各位均為1時(shí)最大,x0為符號(hào)位) 0| 2n 1 例如:n8,最大值編碼:11111111 表示: 111111111000000001 281 目前計(jì)算機(jī)中多采用定點(diǎn)純整數(shù)表示,因此將定點(diǎn)數(shù)表示的運(yùn)算簡(jiǎn)稱為整數(shù)運(yùn)算,定點(diǎn)小數(shù)的表示范圍,純小數(shù)的表示范圍為(x1x2xn各位均為0時(shí)最小;各位均為1時(shí)最大,x0為符號(hào)位) 0|12-n 例如,n8,最大值編碼:0.11111111 表示: 0.11111111 1.00.00000001 1-2-8,如何用定點(diǎn)數(shù)來(lái)表示非常大(e.g. 210+33 )
8、的數(shù)和非常小(e.g. 910-28 )的數(shù)?,210+33 = 0.2 1034 910-28 = 0.9 10-27,引入比例因子1034和10-27,非常大和非常小的數(shù),浮點(diǎn)數(shù)的表示方法,把一個(gè)數(shù)的有效數(shù)字和數(shù)的范圍在計(jì)算機(jī)的一個(gè)存儲(chǔ)單元中分別予以表示 數(shù)的小數(shù)點(diǎn)位置隨比例因子的不同而在一定范圍內(nèi)自由浮動(dòng) 一個(gè)十進(jìn)制數(shù)可以寫成 10e 一個(gè)進(jìn)制數(shù)可以寫成 e,M尾數(shù) e指數(shù) R基數(shù),數(shù)的科學(xué)表達(dá)法,階碼和尾數(shù),用定點(diǎn)小數(shù)表示,給出有效數(shù)字的位數(shù)決定了浮點(diǎn)數(shù)的表示精度,表達(dá)指數(shù)部分 用整數(shù)形式表示,指明小數(shù)點(diǎn)在數(shù)據(jù)中的位置決定浮點(diǎn)數(shù)的表示范圍,早期計(jì)算機(jī)表達(dá)法,32位單精度浮點(diǎn)數(shù),:含階符
9、的階碼,8 位 階碼采用移碼方式來(lái)表示正負(fù)指數(shù),:1位符號(hào)位 0表示正數(shù) 1表示負(fù)數(shù),:尾數(shù),23位小數(shù)表示,小數(shù)點(diǎn)放在尾數(shù)域最前面,IEEE 754標(biāo)準(zhǔn),64位雙精度浮點(diǎn)數(shù),:含階符的階碼,11位,:1位符號(hào)位,:尾數(shù),52位小數(shù),IEEE 754標(biāo)準(zhǔn),浮點(diǎn)數(shù)的規(guī)格化,例:156.78=15.678101 = 1.5678102 = 0.15678103=REM,對(duì)于二進(jìn)制數(shù) 1011.1101=0.10111101 2+4 = 10.111101 2+2 = 1.0111101 2+3 (規(guī)格化表示法)= 1.0111101 2+11 (規(guī)格化表示法) =REM,那么,計(jì)算機(jī)中究竟采用哪種
10、數(shù)據(jù)形式?,多種數(shù)據(jù)形式,二進(jìn)制數(shù),尾數(shù)最高有效位為1,隱藏,并且隱藏在小數(shù)點(diǎn)的左邊(即:1M2) 32位單精度浮點(diǎn)數(shù)規(guī)格化表示 (-1)s(1.) 2E-127 e127(e127) 64位雙精度浮點(diǎn)數(shù)規(guī)格化表示 (-1)s (1.) 2E-1023 e1023(e1023),指數(shù)真值e 用偏移碼形式表示為階碼,規(guī)格化表示原則,IEEE 754標(biāo)準(zhǔn), X(-1)s1.M2e (1.011011)23 1011.011(11.375)10, 指數(shù)e階碼127 1000 001001111111 00000011=(3)10, 包括隱藏位1的尾數(shù)1.M 1.011011,例1:浮點(diǎn)機(jī)器數(shù) (41
11、360000)16,求真值,例2:真值20.59375,求32位單精度浮點(diǎn)數(shù), 分別將整數(shù)和分?jǐn)?shù)部分轉(zhuǎn)換成二進(jìn)制數(shù) 20.5937510100.10011, 移動(dòng)小數(shù)點(diǎn),使其在第1、2位之間,10100.100111.01001001124,e4,S0,E4+12713110000011,M010010011, 得到32位浮點(diǎn)數(shù)的二進(jìn)制存儲(chǔ)格式為:,0 100 0001 1010 0100 1100 0000 0000 0000 (41A4C000)16,E1(0000 0001)254(1111 1110) e-126+127 表達(dá)的數(shù)據(jù)范圍(絕對(duì)值): 最小值: e-126,M0(1.M1
12、) 十進(jìn)制表達(dá):2-1261.1810-38 最大值: e127,M111(23個(gè)1) 1.M1.111 (23個(gè)1) 22-23 十進(jìn)制表達(dá):(22-23)2127 221273.401038,32位單精度規(guī)格化浮點(diǎn)數(shù),IEEE 754標(biāo)準(zhǔn),E12046 e-1022+1023 表達(dá)的數(shù)據(jù)范圍(絕對(duì)值) : 最小值: e-1022,M0(1.M1) 十進(jìn)制表達(dá):2-10222.2310-308 最大值: e1023,M111(52個(gè)1) 1.M1.111 (52個(gè)1) 22-52 十進(jìn)制表達(dá):(22-52)21023 221023 1.7910308,64位雙精度規(guī)格化浮點(diǎn)數(shù),IEEE 75
13、4標(biāo)準(zhǔn),真值0的機(jī)器數(shù)(機(jī)器零) 階碼E0,尾數(shù)M0 正0:S0,負(fù)0:S1 非規(guī)格化浮點(diǎn)數(shù):階碼E0,尾數(shù)M0 規(guī)格化浮點(diǎn)數(shù):階碼E1254(11111110) 無(wú)窮大的機(jī)器數(shù) 階碼E全1(11111111) ,尾數(shù)M0 :S0,:S1 NaN(not a number,不是一個(gè)數(shù)) 階碼E全1(11111111) ,尾數(shù)M0 用來(lái)通知異常情況,IEEE 754標(biāo)準(zhǔn),32位單精度浮點(diǎn)數(shù),十進(jìn)制數(shù)串的表示方法,1.字符串形式 每個(gè)十進(jìn)制的數(shù)位或符號(hào)位都用一個(gè)字節(jié)存放,-38,2.壓縮的十進(jìn)制數(shù)串形式 一個(gè)字節(jié)存放兩個(gè)十進(jìn)制的數(shù)位,符號(hào)位占半個(gè)字節(jié)(例如用C表示正,D表示負(fù)),+12,123,-
14、12,每個(gè)數(shù)位可用BCD碼或ASCII碼,BCD碼(Binary Coded Decimal),二進(jìn)制編碼的十進(jìn)制數(shù) 一個(gè)十進(jìn)制數(shù)位用4位二進(jìn)制編碼來(lái)表示 常用8421 BCD碼:低10個(gè)4位二進(jìn)制編碼表示09 壓縮BCD碼:一個(gè)字節(jié)表達(dá)兩位BCD碼 非壓縮BCD碼:一個(gè)字節(jié)表達(dá)一位BCD碼(低4位表達(dá)數(shù)值,高4位常設(shè)置為0) BCD碼很直觀 BCD碼:0100 1001 0111 1000.0001 0100 1001 十進(jìn)制真值:4978.149,BCD碼便于輸入輸出,表達(dá)數(shù)值準(zhǔn)確,十進(jìn)制數(shù)據(jù)表示,人們習(xí)慣于用十進(jìn)制表示數(shù)據(jù),而計(jì)算機(jī)則采用二進(jìn)制表示和處理數(shù)據(jù)。所以向計(jì)算機(jī)輸入數(shù)據(jù)時(shí),需要
15、進(jìn)行十進(jìn)制數(shù)到二進(jìn)制數(shù)的轉(zhuǎn)換;輸出數(shù)據(jù)時(shí),則要進(jìn)行二進(jìn)制數(shù)到十進(jìn)制數(shù)的轉(zhuǎn)換處理。在數(shù)據(jù)量較小的情況下,這樣的轉(zhuǎn)換對(duì)機(jī)器運(yùn)行效率的影響不是很大。但是,在某些應(yīng)用領(lǐng)域,運(yùn)算簡(jiǎn)單而數(shù)據(jù)量很大,進(jìn)行這些轉(zhuǎn)換所占用的時(shí)間比例比較大。所以為了提高機(jī)器的運(yùn)行效率,計(jì)算機(jī)可以用十進(jìn)制來(lái)表示和處理數(shù)據(jù)。 一個(gè)十進(jìn)制數(shù)位是用若干位二進(jìn)制編碼表示。用四位二進(jìn)制代碼的不同組合來(lái)表示一個(gè)十進(jìn)制數(shù)碼的編碼方法,稱為二十進(jìn)制編碼,也稱BCD碼(Binary Coded Decimal)。 常用這種編碼作為十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)的中間過(guò)渡。即先將一個(gè)十進(jìn)制數(shù)用BCD碼來(lái)表示,再把它們送入機(jī)器, 計(jì)算機(jī)通過(guò)標(biāo)準(zhǔn)子程序使其轉(zhuǎn)換成
16、純二進(jìn)制數(shù)。,二十進(jìn)制編碼原理,1、二十進(jìn)制的編碼都采用壓縮的十進(jìn)制串的方法,即四個(gè)二進(jìn)制位的值來(lái)表示一個(gè)十進(jìn)制數(shù)碼。 2、各種編碼的區(qū)別在于選用哪十個(gè)狀態(tài)。選擇的原則是:要考慮輸入和輸出時(shí)轉(zhuǎn)換方便;內(nèi)部運(yùn)算時(shí),加、減運(yùn)算規(guī)則要盡量簡(jiǎn)單;在特定場(chǎng)合,可能有其它一些要求。 3、從每個(gè)二進(jìn)制位是否有確定的位權(quán)區(qū)分,可把二十進(jìn)制編碼分為有權(quán)碼和無(wú)權(quán)碼。,二-十進(jìn)制有權(quán)碼,對(duì)于有權(quán)碼,將每位的數(shù)碼與相應(yīng)的位權(quán)相乘,再求和,就可以得到它所代表的十進(jìn)制數(shù)值。 8421碼實(shí)現(xiàn)加、減運(yùn)算時(shí)的修正規(guī)則: (1)4位一組二進(jìn)制數(shù),兩個(gè)8421碼表示的數(shù)相加之和等于或小于1001,即十進(jìn)制的9時(shí),不需要修正,在各組
17、內(nèi),二進(jìn)制代碼相加,仍遵循“逢二進(jìn)一”的規(guī)則。 (2)4位一組二進(jìn)制數(shù),兩個(gè)8421碼相加結(jié)果大于1001(即十進(jìn)制9)時(shí),則應(yīng)該對(duì)該組的4位進(jìn)行“加6修正”,使它向高一組產(chǎn)生進(jìn)位。 (3)4位一組二進(jìn)制數(shù),兩個(gè)8421碼相加結(jié)果大于或等于10000(即十進(jìn)制16),而向高一組進(jìn)位時(shí),則應(yīng)該對(duì)該4位進(jìn)行“加6修正”。,二-十進(jìn)制有權(quán)碼,編碼方法:8421碼,2421碼、5211碼、4311碼和84-2-1碼( 四位二進(jìn)制位的位權(quán)分別為8、4、-2、-1)等。其最方便使用的共同特點(diǎn)為: (1) 對(duì)于2421碼、5211碼、4311碼,任何兩個(gè)十進(jìn)制數(shù)位,采用這三種編碼的任何一種編碼,它們相加之和
18、等于或大于10時(shí),其結(jié)果的最高位向左產(chǎn)生進(jìn)位,小于10時(shí)則不產(chǎn)生進(jìn)位。這一特點(diǎn)有利于實(shí)現(xiàn)“逢十進(jìn)位”的計(jì)數(shù)和加法規(guī)則。 (2) 對(duì)于2421碼、5211碼、4311碼和84-2-1碼,任何兩個(gè)十進(jìn)制數(shù)位,采用這四種編碼的任何一種編碼,它們相加其和等于9時(shí),即它們的二進(jìn)制編碼位互為反碼,則其結(jié)果的四個(gè)二進(jìn)制位一定是1111,能較好地體現(xiàn)十進(jìn)制的按9 取補(bǔ)與二進(jìn)制的按1取補(bǔ)的對(duì)應(yīng)關(guān)系,這對(duì)減法很有用。,二十進(jìn)制無(wú)權(quán)碼,無(wú)權(quán)碼中,用的較多的是余3碼(Excess-3 code)和格雷碼(Gray code),格雷碼又稱循環(huán)碼。 1. 余3碼 (1)余3碼是在8421碼的基礎(chǔ)上,把每個(gè)代碼都加上001
19、1而形成的。 (2)普通8421碼的加法器仍能為余3碼加法器直接利用,具體規(guī)則如下: (A)若兩個(gè)十進(jìn)制數(shù)的余3碼相加,如果結(jié)果不產(chǎn)生進(jìn)位,則從所得和值去減0011,便得十進(jìn)制位和的余3碼。 (B)若兩個(gè)十進(jìn)制數(shù)的余3碼相加,如果結(jié)果有進(jìn)位,則其進(jìn)位正確, 但需將所得和值加上0011,才求得十進(jìn)制數(shù)和的余3碼。,二十進(jìn)制無(wú)權(quán)碼,2. 格雷碼 (1)格雷碼的編碼規(guī)則是使相鄰的兩個(gè)代碼,只有一個(gè)二進(jìn)制位的狀態(tài)不同,其余三個(gè)二進(jìn)制位必須有相同狀態(tài)。 (2)優(yōu)點(diǎn):從一個(gè)編碼變到下一個(gè)相鄰編碼時(shí),只有一個(gè)位的狀態(tài)發(fā)生變化,有利于保證代碼變換的連續(xù)性。在模擬/數(shù)字轉(zhuǎn)換和產(chǎn)生節(jié)拍電位等應(yīng)用場(chǎng)合特別有用。,二
20、十進(jìn)制的編碼的部分編碼方案,定點(diǎn)整數(shù)的原碼表示,定點(diǎn)整數(shù)的原碼形式為x0 x1x2 xn,使用8位二進(jìn)制:105 10=011010012 X+105,則 X原 01101001 X-105, 則 X原 11101001 0使用原碼有兩種表達(dá)形式 +0原 =00000000 -0原 =10000000,定點(diǎn)小數(shù)的原碼表示,定點(diǎn)整數(shù)的原碼形式為x0.x1x2 xn,使用8位二進(jìn)制表示 +0.1001,則 X原 01001000 -0.1001,則 X原 11001000 0使用原碼有兩種表達(dá)形式 +0原 =00000000 -0原 =10000000,定點(diǎn)整數(shù)的補(bǔ)碼,有符號(hào)整數(shù)在計(jì)算機(jī)中默認(rèn)采用
21、補(bǔ)碼 最高位表示符號(hào):正數(shù)用0,負(fù)數(shù)用1 正數(shù)補(bǔ)碼:直接表示數(shù)值大?。ㄔa無(wú)符號(hào)數(shù)) 負(fù)數(shù)補(bǔ)碼:將對(duì)應(yīng)正數(shù)補(bǔ)碼取反加1 105補(bǔ)碼01101001 -105補(bǔ)碼01101001取反1 10010110110010111 8位二進(jìn)制補(bǔ)碼表示的數(shù)值范圍:-128+127 16位二進(jìn)制補(bǔ)碼表示的數(shù)值范圍:-215+215-1 32位二進(jìn)制補(bǔ)碼表示的數(shù)值范圍:-231+231-1 N位二進(jìn)制補(bǔ)碼表示的數(shù)值范圍:-2N1+2N1-1,為什么是補(bǔ)碼,負(fù)數(shù)真值“取反加1”得機(jī)器數(shù)補(bǔ)碼 負(fù)數(shù)補(bǔ)碼“取反加1”得到負(fù)數(shù)真值 補(bǔ)碼:11100000 真值:-(11100000求反1)-(00011111+1) -0
22、0100000-25-32 負(fù)數(shù)求補(bǔ)運(yùn)算,等效于用帶借位的0作減法 真值:-8,補(bǔ)碼:-8補(bǔ)碼100H-08HF8H 補(bǔ)碼:11111000,真值:-(100H-F8H)-08H-8,用十六進(jìn)制表達(dá)和運(yùn)算,方便!,定點(diǎn)整數(shù)的反碼,反碼:二進(jìn)制的各位數(shù)碼 0 變?yōu)?,1變?yōu)? 有符號(hào)整數(shù)采用反碼 最高位表示符號(hào):正數(shù)用0,負(fù)數(shù)用1 正數(shù)反碼:直接表示數(shù)值大小(原碼補(bǔ)碼) 負(fù)數(shù)反碼:將對(duì)應(yīng)正數(shù)反碼取反 105反碼01101001 -105反碼01101001取反10010110,定點(diǎn)整數(shù)的移碼(偏移碼),移碼通常用于表示浮點(diǎn)數(shù)的階碼 有符號(hào)整數(shù)采用移碼 最高位表示符號(hào):正數(shù)用1,負(fù)數(shù)用0 移碼的傳
23、統(tǒng)定義: X移碼 2n X 2n X2n 105移碼100000000110100111101001 -105移碼10000000110100100010111,傳統(tǒng)定義與標(biāo)準(zhǔn)浮點(diǎn)數(shù)階碼的定義不同,例5,設(shè)機(jī)器字長(zhǎng)16位,定點(diǎn)表示,尾數(shù)15位,數(shù)符1位,問(wèn): 定點(diǎn)原碼整數(shù)表示時(shí),最大正數(shù)是多少?最小負(fù)數(shù)是多少? 定點(diǎn)原碼小數(shù)表示時(shí),最大正數(shù)是多少?最小負(fù)數(shù)是多少?,例5之解,定點(diǎn)原碼整數(shù)表示 最大正數(shù)值 (2151)10(32767) 10 最小負(fù)數(shù)值 -(2151) 10 (-32767) 10 定點(diǎn)原碼小數(shù)表示 最大正數(shù)值(0.111.11)2 (1 2-15) 10 最小負(fù)數(shù)值(0.11
24、1.11)2(1 2-15)10,數(shù)的機(jī)器碼表示,正數(shù)的原碼、反碼、補(bǔ)碼等于真值,只有負(fù)數(shù)才分別有不同的表示方法 采用補(bǔ)碼,減法運(yùn)算可以用加法運(yùn)算實(shí)現(xiàn),節(jié)省硬件,目前機(jī)器中廣泛采用補(bǔ)碼表示法 有些機(jī)器用原碼進(jìn)行存儲(chǔ)和傳送,運(yùn)算時(shí)改用補(bǔ)碼 有些機(jī)器做加減法時(shí)用補(bǔ)碼,做乘除法時(shí)用原碼 移碼表示法主要用于表示浮點(diǎn)數(shù)的階碼,可以直接比較大小。表示范圍和補(bǔ)碼相同,只有最高位相反,同一代碼的不同含義,一個(gè)代碼,采用不同編碼,其數(shù)值不一樣 計(jì)算機(jī)內(nèi)一個(gè)二進(jìn)制數(shù):1000 0001 不同的含義 無(wú)符號(hào)二進(jìn)制數(shù):129 8421 BCD碼:81 有符號(hào)整數(shù)的原碼:-1 有符號(hào)整數(shù)的反碼:-126 有符號(hào)整數(shù)的補(bǔ)
25、碼:-127,三種編碼的比較,相同點(diǎn): 1、 三種編碼(原碼、反碼、補(bǔ)碼)的最高位都是符號(hào)位。 2、 當(dāng)真值為正時(shí),三種編碼的符號(hào)位都用0表示,數(shù)值部分與真值相同。 即它們的表示方法是相同的。 3、 當(dāng)真值為負(fù)時(shí),三種編碼的符號(hào)位都用1表示,但數(shù)值部分的表示各不相同,數(shù)值部分存在這樣的關(guān)系:補(bǔ)碼是原碼的“求反加1”(整數(shù)),或者“求反末位加1”(小數(shù));反碼是原碼的“每位求反”。 4、 它們所能表示的數(shù)據(jù)范圍基本一樣,-2nX2n(整數(shù))或 -1X1( 小數(shù)),補(bǔ)碼多表示一個(gè)數(shù)-2n(整數(shù))或-1(小數(shù))。 區(qū)別:在于對(duì)負(fù)數(shù)的表示方法有所不同。,ASCII碼(美國(guó)標(biāo)準(zhǔn)信息交換碼),標(biāo)準(zhǔn)ASCI
26、I碼用7位二進(jìn)制編碼,有128個(gè) 不可顯示的控制字符:前32個(gè)和最后一個(gè)編碼 回車CR:0DH 換行LF:0AH 響鈴BEL:07H 可顯示和打印的字符:20H后的94個(gè)編碼 數(shù)碼09:30H39H 大寫字母AZ:41H5AH 小寫字母az:61H7AH 空格:20H 擴(kuò)展ASCII碼:最高D7位為1,表達(dá)制表符號(hào),表2.1 ASCII字符編碼表,0-3位,4-7位,字符串的表示方法,字符串是指連續(xù)的一串字符,通常占用主存中連續(xù)的多個(gè)字節(jié),每個(gè)字節(jié)存一個(gè)字符 IF AB THEN READ(C),從低位字節(jié)向高位字節(jié)的順序存放,從高位字節(jié)向低位字節(jié)的順序存放,小端方式和大端方式,多字節(jié)數(shù)據(jù)通常
27、也連續(xù)存放在主存,占用多個(gè)連續(xù)的字節(jié)存儲(chǔ)單元 小端方式(Little Endian) 低字節(jié)數(shù)據(jù)存放在低地址存儲(chǔ)單元 高字節(jié)數(shù)據(jù)存放在高地址存儲(chǔ)單元 大端方式(Big Endian) 低字節(jié)數(shù)據(jù)存放在高地址存儲(chǔ)單元 高字節(jié)數(shù)據(jù)存放在低地址存儲(chǔ)單元,32位數(shù)據(jù)的存儲(chǔ)方式,32位數(shù)據(jù)(4個(gè)字節(jié)):12 34 56 78H 主存以字節(jié)為單位,每個(gè)存儲(chǔ)單元具有一個(gè)存儲(chǔ)器地址,其中存放一個(gè)字節(jié)數(shù)據(jù)(8位),漢字的輸入編碼,數(shù)字編碼 國(guó)標(biāo)區(qū)位碼,用數(shù)字串代表一個(gè)漢字輸入 拼音碼 以漢字拼音為基礎(chǔ)的輸入方法 字形編碼 用漢字的形狀(筆劃)來(lái)進(jìn)行的編碼 例如五筆字形,漢字交換碼,漢字交換碼是不同的漢字處理系統(tǒng)
28、之間交換信息用的編碼 漢字也是一種字符 1981年我國(guó)制定了信息交換用漢字編碼字符集基本集GB2312-80國(guó)家標(biāo)準(zhǔn)(簡(jiǎn)稱國(guó)標(biāo)碼)。每個(gè)漢字的二進(jìn)制編碼用兩個(gè)字節(jié)表示。共收錄一級(jí)漢字3755個(gè),二級(jí)漢字3008個(gè),各種符號(hào)682個(gè),共計(jì)7445個(gè),漢字內(nèi)碼,漢字內(nèi)碼是用于漢字信息的存儲(chǔ)、檢索等操作的機(jī)內(nèi)代碼,一般采用兩個(gè)字節(jié)表示 漢字內(nèi)碼有多種方案,常以國(guó)標(biāo)碼為基礎(chǔ)的編碼 例如,將國(guó)標(biāo)碼兩字節(jié)的最高位置1后形成 漢字“啊”的國(guó)標(biāo)碼 3021H (0011 0000 0010 0001) 對(duì)應(yīng)的漢字內(nèi)碼 B0A1H (1011 0000 1010 0001),字模碼,漢字的字模碼為: 16位 1
29、6位=32字節(jié),漢字字模點(diǎn)陣及編碼,漢字的表示方法,漢字的輸入編碼、交換碼、漢字內(nèi)碼、字模碼是計(jì)算機(jī)中用于輸入、內(nèi)部處理、交換、輸出四種不同用途的編碼,不要混為一談,字符代碼化(輸入),校驗(yàn)碼,校驗(yàn)碼:能夠發(fā)現(xiàn)甚至糾正信息傳輸或存儲(chǔ)過(guò)程中出現(xiàn)錯(cuò)誤的編碼 檢錯(cuò)碼:僅能檢測(cè)出錯(cuò)誤的編碼 糾錯(cuò)碼:能夠發(fā)現(xiàn)并糾正錯(cuò)誤的編碼 最簡(jiǎn)單且應(yīng)用廣泛的檢錯(cuò)碼:奇偶校驗(yàn)碼 奇校驗(yàn):使包括校驗(yàn)位在內(nèi)的數(shù)據(jù)中為“1”的個(gè)數(shù)恒為奇數(shù) 偶校驗(yàn):使包括校驗(yàn)位在內(nèi)的數(shù)據(jù)中為“1”的個(gè)數(shù)恒為偶數(shù)(包括0) 只能檢測(cè)出奇數(shù)個(gè)位出錯(cuò)的情況,不能糾錯(cuò),例7:用奇校驗(yàn)和偶校驗(yàn)進(jìn)行編碼,數(shù)據(jù) 10101010 01010100 0000
30、0000 01111111 11111111,偶校驗(yàn)碼 10101010 0 01010100 1 00000000 0 01111111 1 11111111 0,奇校驗(yàn)碼 10101010 1 01010100 0 00000000 1 01111111 0 11111111 1,計(jì)算機(jī)的數(shù)據(jù)表示,整數(shù)編碼 定點(diǎn)數(shù),無(wú)符號(hào)數(shù),有符號(hào)數(shù)(補(bǔ)碼),BCD 實(shí)數(shù)編碼 浮點(diǎn)數(shù),單精度,雙精度,規(guī)格化 字符編碼:ASCII碼 漢字編碼 輸入碼,機(jī)內(nèi)碼,交換碼,字形碼 國(guó)際字符編碼:Unicode,編碼:用文字、符號(hào)或者數(shù)碼來(lái)表示某種信息(數(shù)值、語(yǔ)言、操作指令、狀態(tài))的過(guò)程,練習(xí),代碼(BE58000
31、0)16是采用單精度格式保存的浮點(diǎn)數(shù),求其十進(jìn)制真值 有一個(gè)十進(jìn)制數(shù)100.25,請(qǐng)將它轉(zhuǎn)換成單精度浮點(diǎn)數(shù)格式,運(yùn)算方法和運(yùn)算器,2.2 定點(diǎn)加法、減法運(yùn)算 2.3 定點(diǎn)乘法運(yùn)算 2.4 定點(diǎn)除法運(yùn)算 2.5 定點(diǎn)運(yùn)算器的組成 2.6 浮點(diǎn)運(yùn)算方法和浮點(diǎn)運(yùn)算器,例8:0.1001,0.0101,求,x 補(bǔ)0.1001,y 補(bǔ)0.0101 x 補(bǔ) 0.1001 y 補(bǔ)0.0101 + 補(bǔ) 0.1110 所以0.1110,例9:0.1011,0.0101,求,x 補(bǔ)0.1011,y 補(bǔ)1.1011 x 補(bǔ) 0.1011 y 補(bǔ)1.1011 + 補(bǔ) 10.0110 所以0.0110,x1補(bǔ)1.001
32、0 - x1補(bǔ)x1補(bǔ) 2-4 0.11010.00010.1110 x2補(bǔ)0.1101 -x2補(bǔ)x2補(bǔ) 2-4 1.00100.00011.0011,例10:已知10.1110,20.1101求: x1補(bǔ) ,-x1補(bǔ) ,x2補(bǔ) ,-x2補(bǔ),例11:+0.1101,+0.0110,求-,x補(bǔ)0.1101, y補(bǔ)0.0110 -y補(bǔ)1.1010 x 補(bǔ) 0.1101 -y 補(bǔ) 1.1010 - 補(bǔ) 10.0111 所以0.0111,2.2.3 溢出概念與檢驗(yàn)方法,兩個(gè)正數(shù)相加,結(jié)果為負(fù)(即:大于機(jī)器所能表示的最大正數(shù)),稱為上溢。 兩個(gè)負(fù)數(shù)相加,結(jié)果為正(即:小于機(jī)器所能表示的最小負(fù)數(shù)),稱為下溢
33、。 運(yùn)算出現(xiàn)溢出,結(jié)果就是錯(cuò)誤的,例12 0.1011, 0.1001,求。,解: 補(bǔ)0.1011 , 補(bǔ)0.1001 補(bǔ)0.1011 補(bǔ)0.1001 補(bǔ)1.0100 兩正數(shù)相加,結(jié)果為負(fù),顯然錯(cuò)誤。 運(yùn)算中出現(xiàn)了“上溢”,又例 0.1011, 0.0010, 求。,解: 補(bǔ)0.1011 , 補(bǔ)0.0010 補(bǔ)0.1011 補(bǔ)0.0010 補(bǔ)0.1101 兩正數(shù)相加,結(jié)果無(wú)溢出,例13 0.1101, 0.1011, 求。,解:補(bǔ)1.0011 補(bǔ)1.0101 補(bǔ)1.0011 補(bǔ) 1.0101 補(bǔ) 0.1000,兩負(fù)數(shù)相加,結(jié)果為正,顯然錯(cuò)誤。 運(yùn)算中出現(xiàn)了“下溢”,又例 0.1101, 0.0
34、010, 求。,解:補(bǔ)1.0011 補(bǔ)1.1110 補(bǔ)1.0011 補(bǔ) 1.1110 補(bǔ) 1.0001,兩負(fù)數(shù)相加,結(jié)果為負(fù),無(wú) 溢出。,進(jìn)一步結(jié)論: 當(dāng)最高有效位產(chǎn)生進(jìn)位而符號(hào)位無(wú)進(jìn)位時(shí),產(chǎn)生上溢; 當(dāng)最高有效位無(wú)進(jìn)位而符號(hào)位有進(jìn)位時(shí),產(chǎn)生下溢。,產(chǎn)生“溢出”的原因: 分析可知,當(dāng)最高有效數(shù)值位的運(yùn)算進(jìn)位與符號(hào)位的運(yùn)算進(jìn)位不一致時(shí),將產(chǎn)生運(yùn)算“溢出”,“溢出”檢測(cè)方法:,為了判斷“溢出”是否發(fā)生,可采用兩種檢測(cè)的方法。 第一種方法:采用雙符號(hào)位法, 稱為“變形補(bǔ)碼”或“模4補(bǔ)碼”,可使模2補(bǔ)碼所能表示的數(shù)的范圍擴(kuò)大一倍,第二種溢出檢測(cè)方法:采用“單符號(hào)位法”。 當(dāng)最高有效位產(chǎn)生進(jìn)位而符號(hào)位無(wú)
35、進(jìn)位時(shí),產(chǎn)生上溢; 當(dāng)最高有效位無(wú)進(jìn)位而符號(hào)位有進(jìn)位時(shí),產(chǎn)生下溢。 故:溢出邏輯表達(dá)式為: VCfCo 其中: Cf為符號(hào)位產(chǎn)生的進(jìn)位,Co為最高有效位產(chǎn)生的 進(jìn)位。(顯然:此邏輯關(guān)系可用異或門方便地實(shí)現(xiàn)) 在定點(diǎn)機(jī)中,當(dāng)運(yùn)算結(jié)果發(fā)生溢出時(shí),機(jī)器通過(guò)邏 輯電路自動(dòng)檢查出溢出故障,并進(jìn)行中斷處理。,2.2.4 基本的二進(jìn)制加法/減法器,在計(jì)算機(jī)中完成兩個(gè)二進(jìn)制數(shù)相加的基本加法器有半加器和全加器。半加器在完成兩數(shù)相加時(shí),不需要考慮低位進(jìn)位。全加器用來(lái)完成兩個(gè)二進(jìn)制數(shù)相加,并且同時(shí)考慮低位的進(jìn)位,即全加器完成三個(gè)一位數(shù)相加的功能。 設(shè): Ai表示被加數(shù)的第i位 Bi表示加數(shù)的第i位 Ci為第i-1位
36、向第i位產(chǎn)生的進(jìn)位 Ci+1為第i位向第i+1位產(chǎn)生的進(jìn)位 Si為第i位產(chǎn)生的和 則全加器以Ai、Bi、Ci為輸入,以Ci+1、Si為輸出構(gòu)成一個(gè)邏輯圖。,2.2.4 基本的二進(jìn)制加法/減法器,2.2.4 基本的二進(jìn)制加法/減法器,全加器的表達(dá)式為: Si = Ai Bi Ci Ci+1 = AiBi + BiCi + AiCi 一位全加器內(nèi)部邏輯圖,2.2.4 基本的二進(jìn)制加法/減法器,利用全加器可以實(shí)現(xiàn)兩數(shù)的和或差 1、串行加法:從低位開始,每步只完成一位運(yùn)算的加法。 串行加法器只需要一個(gè)全加器和一個(gè)進(jìn)位觸發(fā)器 計(jì)算兩個(gè)n位數(shù)之和,需要n+1步(1位符號(hào)位),或n+2步(2位符號(hào)位)運(yùn)算。
37、 高位運(yùn)算只有等低位運(yùn)算完成后才能進(jìn)行,速度較慢 2、并行加法器:可在同一時(shí)刻完成n位數(shù)的運(yùn)算。 若采用變形補(bǔ)碼表示一個(gè)機(jī)器數(shù),則符號(hào)位需2位,這時(shí)需要n+2個(gè)加法器。 運(yùn)算速度比串行進(jìn)位加法器高很多,這是用足夠多的硬件設(shè)備換來(lái)的,2.2.4 基本的二進(jìn)制加法/減法器,2.3 定點(diǎn)乘法運(yùn)算,實(shí)現(xiàn)乘除法運(yùn)算的方案: 1、當(dāng)使用乘除運(yùn)算較多,速度要求高時(shí),用硬件直接實(shí)現(xiàn); 2、一般情況,配置乘除法選件; 3、對(duì)速度要求不高的機(jī)器,用軟件實(shí)現(xiàn)。,2.3.1 原碼一位乘法 (1/5),算法描述 設(shè)X原=Xs.Xn-1Xn-2XiX1X0=Xs.Xv Y原=Ys.Yn-1Yn-2YiY1Y0=Ys.Yv
38、 則乘積Z原=Zs.Zv=(XsYs).(XvYv) 運(yùn)算步驟 (1) 從乘數(shù)的最低位開始,用乘數(shù)B的每個(gè)二進(jìn)制位去乘被乘數(shù)A,若B 的某個(gè)二進(jìn)制位為1,則得位積A;如為0,則得位積0。 (2) B的各位分別乘以A的所得的位積,因?yàn)槲粰?quán)不同,逐次向左移位,即在空間上按一定位數(shù)錯(cuò)開,這樣逐位進(jìn)行下去,直到乘數(shù)各位都乘完為止。 (3) 把經(jīng)過(guò)移位對(duì)準(zhǔn)的各次位積相加起來(lái)即得結(jié)果。,2.3.1 原碼一位乘法 (2/5),缺點(diǎn) 將多個(gè)數(shù)一次相加,機(jī)器難以實(shí)現(xiàn)。一般的加法器,只能把兩個(gè)輸入數(shù)相加,多個(gè)位積的同時(shí)輸入是無(wú)法實(shí)現(xiàn)的。 乘積位數(shù)增長(zhǎng)了一倍,即2n,而機(jī)器字長(zhǎng)只有n位。 改進(jìn) (a)把一次求和的操
39、作,變成逐步累加求部分積的操作 (b)將求積過(guò)程中逐位按權(quán)左移位積的操作,改為位積不動(dòng),而是上次部分積右移的操作,2.3.1 原碼一位乘法 (3/5),手算方法 例如 求A=0.1101和B=0.0110的乘積 機(jī)器算法 若用Zi表示第i次部分積,則 Z0 = 0 Z1 = 2-1 (B0A + Z0) Z2 = 2-1 (Bn-1A + Z1) Zi = 2-1 (Bn-i+1A + Zi-1) Zn = 2-1 (B1A + Zn-1) Zn即為A和B的乘積,即AB=Zn,2.3.1 原碼一位乘法 (4/5),例題 已知X=-0.1011,Y=0.1001,求XY原 解: X原=1.101
40、1,Y原=0.1001 |X| = 0.1011,|Y| = 0.1001 按原碼一位乘法運(yùn)算規(guī)則,求XY原的數(shù)值部分。 |X|Y| = 0.01100011, 而Zs = Xs Ys = 1 0 =1 最后求得XY原 = 1.01100011,例題之原碼一位乘法運(yùn)算過(guò)程,例題之原碼兩位乘法運(yùn)算過(guò)程,原碼一位乘法邏輯結(jié)構(gòu)原理圖,2.3.1 原碼一位乘法 (5/5),工作原理 (I)乘法開始時(shí),“啟動(dòng)”信號(hào)使控制觸發(fā)器Cx置“1”,于是開啟時(shí)序脈沖T。 (II) 當(dāng)乘數(shù)寄存器R1最末位為“1”時(shí),部分積Zi和被乘數(shù)X在加法器中相加,其結(jié)果輸出至R0的輸入端。 (III)一旦打入控制脈沖T到來(lái),控
41、制信號(hào)LDR0使部分積右移一位,與此同時(shí),R1也在控制信號(hào)LDR1作用下右移一位,且計(jì)數(shù)器i計(jì)數(shù)一次。 (IV)當(dāng)計(jì)數(shù)器i=n時(shí),計(jì)數(shù)器的溢出信號(hào)使觸發(fā)器Cx置“0”,關(guān)閉時(shí)序脈沖T, 乘法宣告結(jié)束。 若將R0和R1連接起來(lái),乘法結(jié)束時(shí)乘積的高n位部分在R0,低n位部分在R1,R1中原來(lái)的乘數(shù)Y由于移位而全部丟失。,2.4 定點(diǎn)除法運(yùn)算,2.4.1 原碼除法算法原理 主要內(nèi)容:原碼一位除法 兩個(gè)原碼表示的數(shù)相除時(shí),商的符號(hào)由兩數(shù)的符號(hào)“異或”求得,即同號(hào)時(shí)為正,異號(hào)為負(fù)。商的數(shù)值可由兩數(shù)的絕對(duì)值相除求得。,2.4.1 原碼一位除法,手算: 假設(shè)被除數(shù)X=0.1001,除數(shù)Y=0.1011,計(jì)算
42、X/Y 0. 1 1 0 1商Q 0.1011 /- 0. 1 0 0 1 0X(R0) - 0. 0 1 0 1 12-1 Y,除數(shù)右移一位,減 - 0. 0 0 1 1 1 0R1 - 0. 0 0 1 0 1 1 2-2 Y,除數(shù)右移一位,減 - 0. 0 0 0 0 1 1 0R2 0. 0 0 0 1 0 1 12-3 Y,除數(shù)右移一位,不減 - 0. 0 0 0 0 1 1 0 0R3 - 0. 0 0 0 0 1 0 1 12-4 Y,除數(shù)右移一位,減 - 0. 0 0 0 0 0 0 0 1R4 得商X/Y=0.1101,余數(shù)=R4=0.00000001,2.4.1 原碼一位除
43、法,筆算特點(diǎn): (1) 每次都是由心算來(lái)比較余數(shù)和除數(shù)的大小,余數(shù)大時(shí),商1;余數(shù)小時(shí),商0。第一次比較時(shí),余數(shù)就是被除數(shù)。 (2) 每做一次減法,總是保持余數(shù)不動(dòng),而除數(shù)向右移一位。 (3) 商的符號(hào)單獨(dú)處理。 為適應(yīng)機(jī)器運(yùn)算,需要進(jìn)行改進(jìn): (1)用補(bǔ)碼加代替直接減(兩個(gè)符號(hào)位) (2)除數(shù)右移改為余數(shù)左移。,2.4.1 原碼一位除法-恢復(fù)余數(shù)法,設(shè)被除數(shù) X原 = Xs.X1X2Xn 除數(shù) Y原 = Ys.Y1Y2Yn 商 Q原 = Qs.Q1Q2Qn 余數(shù) R原 = Rs.R1R2Rn 則它們之間有如下關(guān)系: X原 = Y原Q原 + R原 其除法過(guò)程如下: 符號(hào)處理: Zs = Xs
44、Ys 商的數(shù)值部分,變成兩正數(shù)相除,即|X|/|Y|(|X|Y|),每一步除法通過(guò)2Ri-|Y|(i=0,1,n,R0=|X|)進(jìn)行比較: 若2Ri-|Y| = Ri+10,即余數(shù)為正(Ris=0),則商上“1”; 若2Ri-|Y| = Ri+10,即余數(shù)為負(fù)(Ris=1),則商上“0”。,2.4.1 原碼一位除法-恢復(fù)余數(shù)法,原碼恢復(fù)余數(shù)法與筆算除法極相似,只是處理方法有些不同。 (1)比較余數(shù)和除數(shù)的大小,計(jì)算機(jī)是通過(guò)用余數(shù)減去除數(shù)求得差值,然后通過(guò)差值進(jìn)行判定。當(dāng)差值大于0時(shí),商上1;當(dāng)差值小于0時(shí),商上0。 (2)減去除數(shù)的運(yùn)算,機(jī)器可用加上除數(shù)的補(bǔ)碼機(jī)器負(fù)數(shù)的方式轉(zhuǎn)換為加法運(yùn)算。另外
45、,當(dāng)差值小于0時(shí),商上“0”,不夠減,多減去了除數(shù),還必須加上除數(shù),重新恢復(fù)原來(lái)的余數(shù)。 (3)筆算中,每做一次減法,除數(shù)右移一位。,2.4.1 原碼一位除法-恢復(fù)余數(shù)法,例 X = -0.1001,Y= -0.1011,求X/Y原 解:X原 = 1.1001,Y原 = 1.1011 |X| = 0.1001,|Y| = 0.1011,-|Y|補(bǔ) = 1.0101 運(yùn)算過(guò)程如下: 所以,Qs = 1 1 = 0 X/Y原 = Q原 = 0.1101 R原 = 2-4R5 = 0.00000001,例題之原碼恢復(fù)余數(shù)除法運(yùn)算過(guò)程,2.4.1 原碼一位除法-加減交替法,原碼加減交替法的規(guī)則:當(dāng)余數(shù)
46、為正時(shí),商上1,余數(shù)左移一位,減除數(shù)絕對(duì)值得新余數(shù);當(dāng)余數(shù)為負(fù)時(shí),商上0,余數(shù)左移一位, 加除數(shù)絕對(duì)值得新余數(shù)。 證明: 若被除數(shù)為X,除數(shù)Y,當(dāng)上商操作進(jìn)行到第i位商數(shù)時(shí),設(shè)余數(shù)為Ri,則有下式: Ri = 2Ri-1 +(- |Y|) (1) 若Ri0,則該位商上“1”,下一步操作是: Ri+1 = 2Ri +(- |Y|) (2) 若Ri0,則該位商上“0”,下一步恢復(fù)余數(shù): Rj= Ri+|Y|,然后, Ri+1 = 2Rj +(- |Y|) =2(Ri+|Y|)+(- |Y|) =2Ri+|Y|,2.4.1 原碼一位除法-加減交替法,例 X = -0.1011,Y=0.1101,求X
47、/Y原 解: X原=1.1011,Y原=0.1101 Y補(bǔ)=0.1101,-Y補(bǔ)=1.0011 商的符號(hào) Qs= 1 0 = 1 所以 X/Y原 = 1.1101 余數(shù)=0.01112-4,例題之原碼不恢復(fù)余數(shù)除法運(yùn)算過(guò)程,原碼加減交替法邏輯結(jié)構(gòu)框圖,2.4.1 原碼一位除法-加減交替法,R1為n位寄存器,除法開始前可存放被除數(shù)的低n位,運(yùn)算結(jié)束后存放n位的商。每次上商應(yīng)置于R1的最末位,因?yàn)樗怯杉臃ㄆ鞯倪\(yùn)算結(jié)果最高位來(lái)控制的,所以由f來(lái)設(shè)置。運(yùn)算過(guò)程中,商要逐位左移,故R1寄存器具有左移功能。R0 保存被除數(shù)或余數(shù),運(yùn)算過(guò)程中也要左移,所以它也是一個(gè)具有左移功能的寄存器。運(yùn)算中被除數(shù)(余數(shù)
48、)的低位部分由R1串行移至R0。n+1步運(yùn)算后,求得n+1位商,其中一位整數(shù)位,n位小數(shù)位,這n位小數(shù)位的數(shù)值存于R1寄存器中,而整數(shù)位在最后一次左移時(shí)丟掉,而商的符號(hào)Qf由Xs和Ys通過(guò)異或運(yùn)算得到, 所以可用一個(gè)異或門求得Qf。,2.5 定點(diǎn)運(yùn)算器的組成,運(yùn)算器是數(shù)據(jù)的加工處理部件,是CPU的重要組成部分; 最基本的結(jié)構(gòu)中包含:算術(shù)/邏輯運(yùn)算單元、數(shù)據(jù)緩存寄存器、通用寄存器、多路轉(zhuǎn)換器和數(shù)據(jù)總線等邏輯構(gòu)件。,2.5.1 邏輯運(yùn)算,計(jì)算機(jī)中除了進(jìn)行加、減、乘、除等基本算術(shù)運(yùn)算外,還可對(duì)兩個(gè)或一個(gè)邏輯數(shù)進(jìn)行邏輯運(yùn)算。 所謂邏輯數(shù)是指不帶符號(hào)的二進(jìn)制數(shù)。利用邏輯運(yùn)算可以進(jìn)行兩個(gè)數(shù)的比較,或者從某
49、個(gè)數(shù)中選取某幾位等操作。 主要有邏輯非(反)、邏輯加(或)、邏輯乘(與)、邏輯異或四種基本運(yùn)算。,2.5.2 多功能算術(shù)/邏輯運(yùn)算單元,全加器的表達(dá)式為: Si = Ai Bi Ci Ci+1 = AiBi + BiCi + AiCi 一位全加器內(nèi)部邏輯圖,加法運(yùn)算及其加速方法,在計(jì)算機(jī)技術(shù)發(fā)展過(guò)程中,人們提出了各種各樣提高運(yùn)算速度的方法: 、從計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)角度,提出了并行處理、流水線等方式; 、運(yùn)算電路特別是用高速化的邏輯電路實(shí)現(xiàn)加法和移位功能; 、運(yùn)算方法和邏輯結(jié)構(gòu)的高速化。,加法運(yùn)算及其加速方法,1一級(jí)分組先行進(jìn)位法 (1)相鄰4位加法器單元邏輯(第i-1, i-2, i-3 ,i-4
50、位) Ci=Gi+PiCi-1 Ci-1=Gi-1+Pi-1Ci-2 Ci-2=Gi-2+Pi-2Ci-3 Ci-3=Gi-3+Pi-3Ci-4 展開: Ci-3=Gi-3+Pi-3Ci-4 Ci-2=Gi-2+Pi-2Gi-3+ Pi-2Pi-3 Ci-4 Ci-1=Gi-1+Pi-1 Gi-1+ Pi-1Pi-2Gi-3+ Pi-1 Pi-2Pi-3 Ci-4 Ci=Gi+PiGi-1+Pi Pi-1 Gi-2+Pi Pi-1 Pi-2Gi-3+ PiPi-1 Pi-2Pi-3 Ci-4 Ci中前四項(xiàng)記為GI*,最后一項(xiàng)的前四個(gè)因子記為PI* 則,Ci= GI*+ PI* Ci-4,四位一
51、組先行進(jìn)位全加器,一級(jí)分組先行進(jìn)位及組間行波進(jìn)位,加法運(yùn)算及其加速方法,2 二級(jí)分組先行進(jìn)位法 仿一級(jí)分析法: C3 = G3* + P3*(1) C7 = G7* + P7* G3*+ P7*P3*(1 ) C11 = G11* + P11* G7*+ P11*P7* G3* + P11*P7*P3*(1 ) C15 = G15* + P15* G11*+ P15* P11* G7*+ P15*P11* P7* G3* + P15*P11*P7*P3*(1 ),加法運(yùn)算及其加速方法,總線是計(jì)算機(jī)內(nèi)各部件之間傳送信息的公用的一組連線。 由于計(jì)算機(jī)內(nèi)部的主要工作過(guò)程是信息傳送和加工的過(guò)程,因此在
52、機(jī)器內(nèi)部各部件之間的數(shù)據(jù)傳送非常頻繁。為了減少內(nèi)部的傳送線并便于控制,通常將一些寄存器之間數(shù)據(jù)傳送的通路加以歸并,組成總線結(jié)構(gòu),使不同來(lái)源的信息在此傳輸線上分時(shí)傳送。,2.5.3 內(nèi)部總線,內(nèi)部總線和外部總線,根據(jù)總線所在位置,總線分為內(nèi)部總線和外部總線兩類。 內(nèi)部總線是指CPU內(nèi)各部件的連線 外部總線是指系統(tǒng)總線,即CPU與存儲(chǔ)器、I/O系統(tǒng)之間的連線。,單向總線和雙向總線,按總線的邏輯結(jié)構(gòu)來(lái)說(shuō),總線可分為單向傳送總線和雙向傳送總線。 所謂單向總線,就是信息只能向一個(gè)方向傳送 所謂雙向總線,就是信息可以分兩個(gè)方向傳送,既可以發(fā)送數(shù)據(jù),也可以接收數(shù)據(jù)。,2.5.4 定點(diǎn)運(yùn)算器的基本結(jié)構(gòu),運(yùn)算器
53、包括ALU陣列乘除器寄存器多路開關(guān)三態(tài)緩沖器數(shù)據(jù)總線等邏輯部件。 運(yùn)算器的設(shè)計(jì),主要是圍繞ALU和寄存器同數(shù)據(jù)總線之間如何傳送操作數(shù)和運(yùn)算結(jié)果進(jìn)行的。 在決定方案時(shí),需要考慮數(shù)據(jù)傳送的方便性和操作速度,在微型機(jī)和單片機(jī)中還要考慮在硅片上制作總線的工藝。,2.6 浮點(diǎn)算術(shù)運(yùn)算方法和浮點(diǎn)運(yùn)算器,定點(diǎn)數(shù)的表示數(shù)據(jù)范圍太小,引入浮點(diǎn)數(shù)和相應(yīng)的浮點(diǎn)算術(shù)運(yùn)算。 在浮點(diǎn)算術(shù)運(yùn)算中,階碼和尾數(shù)都是定點(diǎn)數(shù),階碼是定點(diǎn)整數(shù),尾數(shù)是定點(diǎn)純小數(shù),浮點(diǎn)運(yùn)算的規(guī)則可以歸結(jié)為定點(diǎn)運(yùn)算規(guī)則,需要增加一個(gè)階碼的定點(diǎn)運(yùn)算及運(yùn)算結(jié)果的規(guī)格化操作。 一臺(tái)計(jì)算機(jī)究競(jìng)采用浮點(diǎn)運(yùn)算還是定點(diǎn)運(yùn)算,要由具體使用對(duì)象對(duì)計(jì)算機(jī)的實(shí)際要求來(lái)決定。
54、微機(jī)、某些專用機(jī)及某些小型機(jī)往往采用定點(diǎn)運(yùn)算,其浮點(diǎn)運(yùn)算可通過(guò)軟件或增加擴(kuò)展硬件來(lái)實(shí)現(xiàn)。 通用型計(jì)算機(jī)采用浮點(diǎn)運(yùn)算或同時(shí)采用定點(diǎn)、浮點(diǎn)兩種運(yùn)算,由使用者自由選擇。 為了使表示浮點(diǎn)數(shù)具有唯一性,使每一級(jí)計(jì)算的尾數(shù)能獲得最大的有效數(shù)字,以及程序處理的方便性,往往把浮點(diǎn)數(shù)表示為規(guī)格化的浮點(diǎn)數(shù),并采用規(guī)格化浮點(diǎn)數(shù)的運(yùn)算。,1. 浮點(diǎn)加減法運(yùn)算 (1/7),設(shè)兩個(gè)浮點(diǎn)數(shù)x和y分別為: x=Sx2Ex y=Sy2 Ey 其中,Ex、Ey分別是x和y的階碼,Sx和Sy是x、y的尾數(shù)。 假定它們都是規(guī)則化的數(shù),即其尾數(shù)絕對(duì)值總小于1(用補(bǔ)碼表示,允許為1),浮點(diǎn)加減運(yùn)算的運(yùn)算步驟如下:,1. 浮點(diǎn)加減法運(yùn)算
55、(2/7),1 對(duì)階:小階向大階看齊 對(duì)階的第一步是求階差:E =Ex-Ey 若E =0,表示兩數(shù)階碼相等,即ExEy,不需要對(duì)階 若E 0,表明ExEy 若E 0,表明ExEy 對(duì)于ExEy的這種情況,需要對(duì)階。采用 “小階向大階看齊”的方法,即小階的尾數(shù)右移E 位,小階的階碼增加E 與大階相等。 2 尾數(shù)求和(差) 對(duì)階完成后,就按定點(diǎn)加減運(yùn)算求兩數(shù)的尾數(shù)之和。,1. 浮點(diǎn)加減法運(yùn)算 (3/7),3 規(guī)格化 (1)對(duì)于定點(diǎn)小數(shù),其規(guī)格化數(shù)為: 00.1xxx 11.0 xxx(原碼表示法) (2)對(duì)于負(fù)數(shù)的補(bǔ)碼表示法,規(guī)格化定義有所不同: 根據(jù)規(guī)格化浮點(diǎn)數(shù)的定義可知,規(guī)格化的尾數(shù)應(yīng)滿足:
56、S0時(shí) 1/2SS-1 理論上,S可等于-1/2,但-1/2補(bǔ)=11.1000,為了便于判別是否是規(guī)格化數(shù),不把-1/2列為規(guī)格化數(shù),而把-1列入規(guī)格化數(shù)。 -1補(bǔ)=11.000 補(bǔ)碼規(guī)格化的浮點(diǎn)數(shù)應(yīng)有兩種形式: 00.1xxx 11.0 xxx,1. 浮點(diǎn)加減法運(yùn)算 (4/7),由此可知補(bǔ)碼規(guī)格化的條件是: (A)若和或差的尾數(shù)兩符號(hào)位相等且與尾數(shù)第一位相等,則需向左規(guī)格化。即將和或差的尾數(shù)左移,每移一位,和或差的階碼減一,直至尾數(shù)第一位與尾符不等時(shí)為止。 (B)若和或差的尾數(shù)兩符號(hào)位不等,即01.xxx或10.xxx形式,表示尾數(shù)求和(差)結(jié)果絕對(duì)值大于,向左破壞了規(guī)格化。此時(shí)應(yīng)該將和(差
57、)的尾數(shù)右移1位,階碼加,即進(jìn)行向右規(guī)格化。 4 舍入 (1) “0舍1入”法,即右移時(shí)丟掉的最高位為0,則舍去;是1,則將尾數(shù)的末位加1(相當(dāng)于進(jìn)入)。 (2)“恒置1”法,即不管移掉的是0還是1,都把尾數(shù)的末位置1。,1. 浮點(diǎn)加減法運(yùn)算 (5/7),5. 浮點(diǎn)數(shù)的溢出判斷:由階碼判斷是否溢出。 設(shè)階碼數(shù)值部分取7位,符號(hào)位取2位,用補(bǔ)碼表示,則能表示的最大階碼E補(bǔ)=001111111=127; 最小階碼E補(bǔ)=110000000=-128; (1)小于-128,稱為下溢:發(fā)生在左規(guī)時(shí); 用機(jī)器0表示(階碼、尾數(shù)全0) (2)大于+127時(shí),稱為上溢,這是浮點(diǎn)數(shù)的真正溢出 置溢出標(biāo)志,作中斷
58、處理 總結(jié): E補(bǔ)=01 XXX為上溢,真正溢出,需做溢出處理。 E 補(bǔ)=10 XXX為下溢,浮點(diǎn)數(shù)值趨于零,用機(jī)器零表示。,1. 浮點(diǎn)加減法運(yùn)算 (6/7),例 x = 0.11011001,y=- (0.1010)1011,求x+y=? 解: (1)對(duì)階: 假定兩數(shù)在計(jì)算機(jī)中采用補(bǔ)碼制,則 x補(bǔ)=0001,00.1101 Ex=0001 y補(bǔ)=0011,11.0110 Ey=0011 求階差:E =Ex-Ey=0001+1101=1110,即E =-2,表示x的階碼Ex小于y的階碼Ey,階差為-2,所以應(yīng)使x的尾數(shù)右移2位,階碼加2,則x補(bǔ)=0011, 00.0011,這時(shí)E =0,對(duì)階完畢。,1. 浮點(diǎn)加減法運(yùn)算 (7/7),(2) 尾數(shù)求和(差) x和y對(duì)階后的尾數(shù)分別為:Sx補(bǔ)=00.0011,Sy補(bǔ)=11.0110 則 Sx補(bǔ)+Sy補(bǔ)=00.0011+11.0110=11.1001 x+y補(bǔ)=0011,11.1001 (3) 規(guī)格化 和的尾數(shù)的兩符號(hào)位相等,但小數(shù)點(diǎn)后的第一位也與符號(hào)位相等,不
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年四川省建筑安全員《A證》考試題庫(kù)
- 測(cè)定金屬的電阻率 練習(xí)使用螺旋測(cè)微器課件
- 《實(shí)施臨床路徑工作》課件
- 上海牛津英語(yǔ)1B unit8 精美教案
- DB32T-防汛抗旱特征水位核定規(guī)程編制說(shuō)明
- 海南省海口市2024-2025學(xué)年四年級(jí)(上)期末語(yǔ)文試卷(含答案)
- 2025年社會(huì)服務(wù)行業(yè)投資策略報(bào)告:穩(wěn)舵定錨行致遠(yuǎn)奮楫揚(yáng)帆譜新篇
- 球的表面積和體積課件
- 【大學(xué)課件】單片機(jī)的系統(tǒng)擴(kuò)展
- 經(jīng)濟(jì)學(xué)馬曉蓮課件房地產(chǎn)市場(chǎng)研究分析
- Python數(shù)據(jù)分析與應(yīng)用 課件 第12章 Seaborn
- 初三歷史復(fù)習(xí)備考策略
- 廣東省云浮市(2024年-2025年小學(xué)五年級(jí)語(yǔ)文)人教版期末考試(上學(xué)期)試卷及答案
- 國(guó)潮風(fēng)中國(guó)風(fēng)2025蛇年大吉蛇年模板
- 《信托知識(shí)培訓(xùn)》課件
- 物業(yè)項(xiàng)目經(jīng)理崗位競(jìng)聘
- 第8課《蒲柳人家(節(jié)選)》教學(xué)設(shè)計(jì)-2023-2024學(xué)年統(tǒng)編版語(yǔ)文九年級(jí)下冊(cè)
- 幼兒沙池活動(dòng)指導(dǎo)方法
- 2024年冬季校園清雪合同
- 翻譯美學(xué)理論
- 15J403-1-樓梯欄桿欄板(一)
評(píng)論
0/150
提交評(píng)論