白中英 第五版 計(jì)算機(jī)組成原理第2章_第1頁
白中英 第五版 計(jì)算機(jī)組成原理第2章_第2頁
白中英 第五版 計(jì)算機(jī)組成原理第2章_第3頁
白中英 第五版 計(jì)算機(jī)組成原理第2章_第4頁
白中英 第五版 計(jì)算機(jī)組成原理第2章_第5頁
已閱讀5頁,還剩135頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第二章運(yùn)算方法與運(yùn)算器

2.1數(shù)據(jù)與文字的表示方法

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)算器☆☆二進(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-1…a1a0.b1b2…bm=

an×2n+an-1×2n-1+…+a1×21+a0×20

+b1×2-1+b2×2-2+…+bm×2-m

其中ai,bj非0即1十六進(jìn)制數(shù)用于表達(dá)二進(jìn)制數(shù),相互轉(zhuǎ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-1…a1a0.b1b2…bm=

an×16n+an-1×16n-1+…+a1×161+

a0×160 +b1×16-1+b2×16-2+…+bm×16-m

其中ai,bj是0~F中的一個(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

=1×21+1×20+1×2-1+0×2-2+1×2-3

=3.625十六進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù) 1.2H

=1×160+2×16-1

=1.125十六進(jìn)制數(shù)用后綴字母H二進(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ù)

126=01111110B 126=7EH十進(jìn)制小數(shù)轉(zhuǎn)換為二或十六進(jìn)制數(shù)小數(shù)部分轉(zhuǎn)換:用乘法分別乘以各自的基數(shù),記錄整數(shù)部分,直到小數(shù)部分為0為止

0.8125=0.1101B 0.8125=0.DH小數(shù)轉(zhuǎn)換會(huì)發(fā)生總是無法乘到為0的情況可選取一定位數(shù)(精度)將產(chǎn)生無法避免的轉(zhuǎn)換誤差真值和機(jī)器數(shù)真值:現(xiàn)實(shí)中真實(shí)的數(shù)值機(jī)器數(shù):計(jì)算機(jī)中用0和1數(shù)碼組合表達(dá)的數(shù)值無符號(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ù)具有原碼、反碼、補(bǔ)碼、移碼沒有符號(hào)位,使用全部字長來表示數(shù)值大小字長N=8時(shí),編碼:00000000~11111111

取值范圍:0~255(28-1)字長N=16時(shí),編碼:0000~FFFFH

取值范圍:0~65535(216-1)字長N=32時(shí),編碼:00000000~FFFFFFFFH

取值范圍:0~232-1無符號(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ù)值范圍有限,但要求的處理硬件比較簡單浮點(diǎn)格式容許的數(shù)值范圍很大,但要求的處理硬件比較復(fù)雜2.1.1

數(shù)據(jù)格式1、定點(diǎn)數(shù)的表示方法定點(diǎn)表示:約定機(jī)器中所有數(shù)據(jù)的小數(shù)點(diǎn)位置是固定不變的。通常將數(shù)據(jù)表示成純小數(shù)或純整數(shù)定點(diǎn)數(shù)x=x0x1x2…xn

在定點(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)位置定點(diǎn)數(shù)例例:X=+1010110.純整數(shù):X=01010110.正數(shù),符號(hào)位取0Y=-1101001.純整數(shù):Y=11101001.(原碼)負(fù)數(shù),符號(hào)位取1X=+0.11011Y=-0.10101符號(hào)位取0純小數(shù):X=0.11011符號(hào)位取1純小數(shù):X=1.10101(原碼)定點(diǎn)整數(shù)的表示范圍純整數(shù)的表示范圍為(x1x2…xn各位均為0時(shí)最??;各位均為1時(shí)最大,x0為符號(hào)位)

0≤|x|≤2n

-1例如:n=8,最大值編碼:11111111

表示:11111111=100000000-1

=28-1目前計(jì)算機(jī)中多采用定點(diǎn)純整數(shù)表示,因此將定點(diǎn)數(shù)表示的運(yùn)算簡稱為整數(shù)運(yùn)算定點(diǎn)小數(shù)的表示范圍純小數(shù)的表示范圍為(x1x2…xn各位均為0時(shí)最小;各位均為1時(shí)最大,x0為符號(hào)位)

0≤|x|≤1-2-n例如,n=8,最大值編碼:0.11111111

表示:0.11111111=1.0-0.00000001

=1-2-82、浮點(diǎn)數(shù)的表示方法電子質(zhì)量(克):9×10-28=0.9×10-27

太陽質(zhì)量(克):2×1033=0.2×1034

采用定點(diǎn)很難表示,而且不容易計(jì)算??數(shù)的小數(shù)點(diǎn)位置隨比例因子的不同而在一定范圍內(nèi)自由浮動(dòng)

一個(gè)十進(jìn)制數(shù)N可以寫成

N=10e×M一個(gè)R進(jìn)制數(shù)N可以寫成

N=Re×MM

尾數(shù)e

指數(shù)R 基數(shù)數(shù)的科學(xué)表達(dá)法階碼和尾數(shù)用定點(diǎn)小數(shù)表示,給出有效數(shù)字,決定了浮點(diǎn)數(shù)的表示精度表達(dá)指數(shù)部分用整數(shù)形式表示,指明小數(shù)點(diǎn)在數(shù)據(jù)中的位置決定浮點(diǎn)數(shù)的表示范圍早期計(jì)算機(jī)表達(dá)法浮點(diǎn)數(shù)的機(jī)器表示方法32位單精度浮點(diǎn)數(shù)E:含階符的階碼,8位階碼采用移碼方式(方便比較和對階)來表示正負(fù)指數(shù),采用這種方式時(shí),將浮點(diǎn)數(shù)的指數(shù)真值e變成階碼E時(shí),應(yīng)將指數(shù)e加上一個(gè)固定的偏移值127(01111111),即E=e+127。

S:1位符號(hào)位0表示正數(shù)1表示負(fù)數(shù)M:尾數(shù),23位小數(shù)表示,小數(shù)點(diǎn)放在尾數(shù)域最前面IEEE754標(biāo)準(zhǔn)64位雙精度浮點(diǎn)數(shù)S:1位符號(hào)位M:尾數(shù),52位小數(shù)IEEE754標(biāo)準(zhǔn)E:含階符的階碼,11位階碼采用移碼方式(方便比較和對階)來表示正負(fù)指數(shù),采用這種方式時(shí),將浮點(diǎn)數(shù)的指數(shù)真值e變成階碼E時(shí),應(yīng)將指數(shù)e加上一個(gè)固定的偏移值1023(01111111111),即E=e+1023。

浮點(diǎn)數(shù)的規(guī)格化例:156.78 =15.678×101 =

1.5678×102 =0.15678×103=RE×M對于二進(jìn)制數(shù)1011.1101 =0.10111101×2+4 =10.111101×2+2 =1.0111101×2+3(規(guī)格化表示法)

=1.0111101×2+11(規(guī)格化表示法)

=RE×M那么,計(jì)算機(jī)中究竟采用哪種數(shù)據(jù)形式?多種數(shù)據(jù)形式二進(jìn)制數(shù)IEEE754標(biāo)準(zhǔn)小數(shù)點(diǎn)左邊這個(gè)1在機(jī)器里可以省略(少存一位)尾數(shù)最高有效位為1,隱藏,并且隱藏在小數(shù)點(diǎn)的左邊(即:1≤M<2)32位單精度浮點(diǎn)數(shù)規(guī)格化表示 x=(-1)s×(1.M)×2E-127 e=E-127(E=e+127)64位雙精度浮點(diǎn)數(shù)規(guī)格化表示 x=(-1)s×(1.M)×2E-1023 e=E-1023(E=e+1023)指數(shù)真值e用移碼形式表示為階碼E尾數(shù)規(guī)格化表示原則IEEE754標(biāo)準(zhǔn)④X=(-1)s×1.M×2e

=+(1.011011)×23 =+1011.011=(11.375)10②指數(shù)e=階碼-127=10000010-01111111

=00000011=(3)10③包括隱藏位1的尾數(shù)1.M=1.011011例1:浮點(diǎn)機(jī)器數(shù)(41360000)16,求真值①十六進(jìn)制數(shù)展開成二進(jìn)制數(shù)010000010011011000000000

0000

0000S階碼E(8位)尾數(shù)M(23位)例2:真值20.59375,求32位單精度浮點(diǎn)數(shù)①分別將整數(shù)和分?jǐn)?shù)部分轉(zhuǎn)換成二進(jìn)制數(shù)

20.59375=10100.10011②移動(dòng)小數(shù)點(diǎn),使其在第1、2位之間10100.10011=1.010010011×24e=4S=0E=4+127=131=10000011M=010010011③得到32位浮點(diǎn)數(shù)的二進(jìn)制存儲(chǔ)格式為:0

100000110100100110000000000

0000=(41A4C000)16二進(jìn)制:010000011010000110000000,,,S=0e=10000011-01111111=100=4M=1.01000011真值=+(1.01000011)×24

=+10100.0011=20.187510練習(xí)題:若浮點(diǎn)機(jī)器為(41A18000)16,求真值?3、十進(jìn)制數(shù)據(jù)表示人們習(xí)慣于用十進(jìn)制表示數(shù)據(jù),而計(jì)算機(jī)則采用二進(jìn)制表示和處理數(shù)據(jù)。所以向計(jì)算機(jī)輸入數(shù)據(jù)時(shí),需要進(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)換對機(jī)器運(yùn)行效率的影響不是很大。但是,在某些應(yīng)用領(lǐng)域,運(yùn)算簡單而數(shù)據(jù)量很大,進(jìn)行這些轉(zhuǎn)換所占用的時(shí)間比例比較大。所以為了提高機(jī)器的運(yùn)行效率,計(jì)算機(jī)可以用十進(jìn)制來表示和處理數(shù)據(jù)。一個(gè)十進(jìn)制數(shù)位是用若干位二進(jìn)制編碼表示。用四位二進(jìn)制代碼的不同組合來表示一個(gè)十進(jìn)制數(shù)碼的編碼方法,稱為二—十進(jìn)制編碼,也稱BCD碼(BinaryCodedDecimal)。常用這種編碼作為十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)的中間過渡。即先將一個(gè)十進(jìn)制數(shù)用BCD碼來表示,再把它們送入機(jī)器。BCD碼(BinaryCodedDecimal)二進(jìn)制編碼的十進(jìn)制數(shù)一個(gè)十進(jìn)制數(shù)位用4位二進(jìn)制編碼來表示常用8421BCD碼:低10個(gè)4位二進(jìn)制編碼表示0~9BCD碼很直觀BCD碼:0100100101111000.000101001001十進(jìn)制真值: 4978.149BCD碼便于輸入輸出,表達(dá)數(shù)值準(zhǔn)確

十進(jìn)制數(shù)串的表示方法1.字符串形式每個(gè)十進(jìn)制的數(shù)位或符號(hào)位都用一個(gè)字節(jié)存放+12-38-382.壓縮的十進(jìn)制數(shù)串形式一個(gè)字節(jié)存放兩個(gè)十進(jìn)制的數(shù)位,符號(hào)位占半個(gè)字節(jié),數(shù)位加符號(hào)位之和必須為偶數(shù)(例如用C表示正,D表示負(fù))+12123

C012D+123-12

每個(gè)數(shù)位可用BCD碼1.原碼表示法定點(diǎn)整數(shù)的原碼形式為x0x1x2…xn

X

2n

>X≥0

[X]原=

2n-X=2n+|X|

0≥X>-2n使用8位二進(jìn)制:[105]10=[01101001]2X=+105,則[X]原=01101001X=-105,則[X]原=111010010使用原碼有兩種表達(dá)形式

[+0]原

=00000000

[-0]原

=10000000符號(hào)位2.1.2數(shù)的機(jī)器碼表示具有原碼、反碼、補(bǔ)碼、移碼原碼缺點(diǎn)進(jìn)行加減運(yùn)算十分麻煩比較數(shù)的絕對值的大小大數(shù)減小數(shù)符號(hào)跟大數(shù)2/6/20235:13AM

現(xiàn)在是北京時(shí)間3點(diǎn)整,而時(shí)鐘卻指向5點(diǎn)。5-2=35+10=15=3(12自動(dòng)丟失。12就是模)2、補(bǔ)碼表示法2/6/20235:13AM繼續(xù)推導(dǎo):

5-2=5+10(MOD12)

-2=10(MOD12)結(jié)論:可以說:在模為12的情況下,-2的補(bǔ)碼就是10。一個(gè)負(fù)數(shù)用其補(bǔ)碼代替,可以把減法轉(zhuǎn)換為加法來實(shí)現(xiàn)。2.補(bǔ)碼表示法定點(diǎn)整數(shù)的補(bǔ)碼形式為x0x1x2…xn

X

2n

>X≥0

[X]補(bǔ)=

2n+1+X=2n+1-|X|

0≥x≥-2n定點(diǎn)整數(shù)的補(bǔ)碼方法有符號(hào)整數(shù)在計(jì)算機(jī)中默認(rèn)采用補(bǔ)碼最高位表示符號(hào):正數(shù)用0,負(fù)數(shù)用1正數(shù)補(bǔ)碼:直接表示數(shù)值大?。ǎ皆a=無符號(hào)數(shù))負(fù)數(shù)補(bǔ)碼:符號(hào)位不變,將對應(yīng)數(shù)值取反加1 [105]補(bǔ)碼=+1101001=01101001 [-105]補(bǔ)碼=-[1101001]取反+1

=-0010110+1=-0010111=10010111為什么是補(bǔ)碼證明:[-105]補(bǔ)=2n+1+X=28+(-1101001)=100000000+(-1101001)=100101113、定點(diǎn)整數(shù)的反碼反碼:二進(jìn)制的各位數(shù)碼0變?yōu)?,1變?yōu)?有符號(hào)整數(shù)采用反碼最高位表示符號(hào):正數(shù)用0,負(fù)數(shù)用1正數(shù)反碼:直接表示數(shù)值大?。ǎ皆a=補(bǔ)碼)負(fù)數(shù)反碼:將對應(yīng)正數(shù)反碼取反

[105]反碼=01101001 [-105]反碼=[1101001]取反=100101104、定點(diǎn)整數(shù)的移碼(偏移碼)移碼通常用于表示浮點(diǎn)數(shù)的階碼有符號(hào)整數(shù)采用移碼最高位表示符號(hào):正數(shù)用1,負(fù)數(shù)用0(跟其他碼相反)移碼的傳統(tǒng)定義:

[X]移碼=2n+X

2n

>X≥-2n [105]移碼=10000000+1101001=1,1101001 [-105]移碼=10000000-1101001=0,0010111相對于偏移一半傳統(tǒng)定義與標(biāo)準(zhǔn)浮點(diǎn)數(shù)階碼的定義不同真值原碼反碼補(bǔ)碼移碼-128

1000000000000000-12711111111100000001000000100000001...............-110000001111111101111111101111111-010000000111111110000000010000000+000000000000000000000000010000000+100000001000000010000000110000001...............+12701111111011111110111111111111111例8

設(shè)機(jī)器字長16位,定點(diǎn)表示,尾數(shù)15位,數(shù)符1位,問:

定點(diǎn)原碼整數(shù)表示時(shí),最大正數(shù)是多少?最小負(fù)數(shù)是多少?

定點(diǎn)原碼小數(shù)表示時(shí),最大正數(shù)是多少?最小負(fù)數(shù)是多少?例8之解⑴定點(diǎn)原碼整數(shù)表示最大正數(shù)值=(215-1)10=(+32767)10

最小負(fù)數(shù)值=-(215-1)10

=(-32767)10

⑵定點(diǎn)原碼小數(shù)表示最大正數(shù)值=(+0.111...11)2

=(1-2-15)10最小負(fù)數(shù)值=(-0.111..11)2=-(1-2-15)100

11111111111

1111

1

11111111111

1111

例9假設(shè)由S,E,M三個(gè)域組成的一個(gè)32位二進(jìn)制字所表示的非零規(guī)格化浮點(diǎn)數(shù)x,真值表示為(非IEEE754標(biāo)準(zhǔn)):

x=(-1)s×(1.M)×2E-128

問:它所表示的規(guī)格化的最大正數(shù)、最小正數(shù)、最大負(fù)數(shù)、最小負(fù)數(shù)是多少?(1)最大正數(shù)01111111111111111111

1111

1111

1111x=[1+(1-2-23)]×2127(2)最小正數(shù)000000000000000000

000

000

000

00000x=1.0×2-128(3)最小負(fù)數(shù)111111111111111111

111

111

111

11111x=-[1+(1-2-23)]×2127(4)最大負(fù)數(shù)

100000000000000000

000

000

000

00000x=-1.0×2-128

同一代碼的不同含義一個(gè)代碼,采用不同編碼,其數(shù)值不一樣計(jì)算機(jī)內(nèi)一個(gè)二進(jìn)制數(shù): 10000001不同的含義無符號(hào)二進(jìn)制數(shù): 1298421BCD碼: 81有符號(hào)整數(shù)的原碼: -1有符號(hào)整數(shù)的反碼: -126有符號(hào)整數(shù)的補(bǔ)碼: -127數(shù)的機(jī)器碼表示小結(jié)正數(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ǔ)碼相同,只有最高位相反ASCII碼(美國標(biāo)準(zhǔn)信息交換碼)標(biāo)準(zhǔn)ASCII碼用8位二進(jìn)制編碼,最高位為偶校驗(yàn)位,其余7位構(gòu)成128個(gè)編碼可顯示和打印的字符:20H后的94個(gè)編碼數(shù)碼0~9:30H~39H大寫字母A~Z:41H~5AH小寫字母a~z:61H~7AH空格:20H2.1.3字符和字符串(非數(shù)值)的表示方法表2.1ASCII字符編碼表0000010100111001011101110000NULDELSP0@P`p0001SOHDC1!1AQaq0010STXDC2"2BRbr0011ETXDC3#3CScs0100EOTDC4$4DTdt0101ENQNAK%5EUeu0110ACKSYN&6FVfv0111BELETB'7GWgw1000BSCAN(8HXhx1001HTEM)9IYiy1010LFSUB*:JZjz1011VTESC+;K[k{1100FFFS,<L\1|1101CRGS-=M]m}1110SORS.>N^n~1111SIUS/?O_oDEL0-3位4-6位字符串的表示方法字符串是指連續(xù)的一串字符,通常占用主存中連續(xù)的多個(gè)字節(jié),每個(gè)字節(jié)存一個(gè)字符

IFA>BTHENREAD(C)字符串的存放方法1.漢字的輸入編碼數(shù)字編碼國標(biāo)區(qū)位碼,用數(shù)字串代表一個(gè)漢字輸入

拼音碼以漢字拼音為基礎(chǔ)的輸入方法字形編碼用漢字的形狀(筆劃)來進(jìn)行的編碼例如五筆字形2.1.4漢字的表示方法

2、漢字內(nèi)碼漢字內(nèi)碼是用于漢字信息的存儲(chǔ)、檢索等操作的機(jī)內(nèi)代碼,一般采用兩個(gè)字節(jié)表示漢字內(nèi)碼有多種方案,常以國標(biāo)碼為基礎(chǔ)進(jìn)行編碼例如,將國標(biāo)碼兩字節(jié)的最高位置1后形成漢字“啊”的CCDOS系統(tǒng)漢字內(nèi)碼

3021H(0011000000100001)對應(yīng)的漢字內(nèi)碼

B0A1H(1011000010100001)字模碼漢字的字模碼為:16位×16位=32字節(jié)漢字字模點(diǎn)陣及編碼3、漢字字模碼-用于對漢字進(jìn)行顯示輸出漢字的表示方法漢字的輸入編碼、漢字內(nèi)碼、字模碼是計(jì)算機(jī)中用于輸入、內(nèi)部處理、交換、輸出四種不同用途的編碼,不要混為一談

顯示輸出打印輸出機(jī)內(nèi)碼向字形碼轉(zhuǎn)換機(jī)內(nèi)碼輸入碼向機(jī)內(nèi)碼轉(zhuǎn)換字符代碼化(輸入)2.1.5校驗(yàn)碼校驗(yàn)碼:能夠發(fā)現(xiàn)甚至糾正信息傳輸或存儲(chǔ)過程中出現(xiàn)錯(cuò)誤的編碼檢錯(cuò)碼:僅能檢測出錯(cuò)誤的編碼糾錯(cuò)碼:能夠發(fā)現(xiàn)并糾正錯(cuò)誤的編碼最簡單且應(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)只能檢測出奇數(shù)個(gè)位出錯(cuò)的情況,不能糾錯(cuò)例7:用奇校驗(yàn)和偶校驗(yàn)進(jìn)行編碼數(shù)據(jù)1010101001010100000000000111111111111111偶校驗(yàn)碼101010100010101001000000000011111111111111110奇校驗(yàn)碼1010101010101010000000000010111111101111111112.2運(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)算器2.2.1補(bǔ)碼加法補(bǔ)碼加法公式

[x]補(bǔ)+[y]補(bǔ)=[x+y]補(bǔ)

(mod2n+1)

在模2n+1意義下,任意兩數(shù)的補(bǔ)碼之和等于該兩數(shù)之和的補(bǔ)碼。補(bǔ)碼加法特點(diǎn)符號(hào)位要作為數(shù)的一部分一起參加運(yùn)算要在模2n+1的意義下相加,即超過2n+1的進(jìn)位要丟掉[x]補(bǔ)+[y]補(bǔ)=[x+y]補(bǔ)證明假設(shè)采用定點(diǎn)整數(shù)表示現(xiàn)分四種情況來證明(1)x﹥0,y﹥0,則x+y﹥0[x]補(bǔ)=x,[y]補(bǔ)=y,[x+y]補(bǔ)=x+y所以等式成立.(2)x﹥0,y﹤0,則x+y>0或x+y<0[x]補(bǔ)=x,[y]補(bǔ)=2n+1+y,[x]補(bǔ)+[y]補(bǔ)=x+y+2n+1

當(dāng)x+y>0時(shí),2n+1

+(x+y)>2n+1,進(jìn)位2n+1必丟失,又因(x+y)>0,故[x]補(bǔ)+[y]補(bǔ)=x+y=[x+y]補(bǔ)

當(dāng)x+y<0時(shí),2n+1

+(x+y)<2n+1,又因(x+y)<0,故[x]補(bǔ)+[y]補(bǔ)=2n+1

+(x+y)=[x+y]補(bǔ)

所以上式成立[x]補(bǔ)+[y]補(bǔ)=[x+y]補(bǔ)證明(3)x<0,y>0,則x+y>0或x+y<0

這種情況和第2種情況一樣,把x和y的位置對調(diào)即得證。(4)x<0,y<0,則x+y<0相加兩數(shù)都是負(fù)數(shù),則其和也一定是負(fù)數(shù)?!遊x]補(bǔ)=2n+1

+x,

[y]補(bǔ)=2n+1

+y∴[x]補(bǔ)+[y]補(bǔ)=2n+1+x+2n+1+y=2n+1+(2n+1

+x+y)上式右邊分為”2n+1”和(2n+1+x+y)兩部分.既然(x+y)是負(fù)數(shù),那么(2n+1

+x+y)進(jìn)位”2n+1”必丟失.又因(x+y)<0,所以[x]補(bǔ)+[y]補(bǔ)=2n+1

+(x+y)=[x+y]補(bǔ)

例11:x=+1001,y=+0101,求x+y[x]

補(bǔ)=01001,[y]

補(bǔ)=00101

[x]

補(bǔ)

01001+[y]

補(bǔ)

00101

[x+y]

補(bǔ)

01110

所以x+y=01110

例9:x=+1011,y=-0101,求x+y[x]

補(bǔ)=01011,[y]

補(bǔ)=11011

[x]

補(bǔ)

01011+[y]

補(bǔ)

11011

[x+y]

補(bǔ)

100110

所以x+y=001102.2.2補(bǔ)碼減法補(bǔ)碼減法運(yùn)算公式[x-y]補(bǔ)=[x]補(bǔ)-[y]補(bǔ)=[x]補(bǔ)+[-y]補(bǔ)[x-y]補(bǔ)=[x]補(bǔ)-[y]補(bǔ)=[x]補(bǔ)+[-y]補(bǔ)只要證明[-y]補(bǔ)=-[y]補(bǔ),上式即得證?,F(xiàn)證明如下:∵[x+y]補(bǔ)=[x]補(bǔ)+[y]補(bǔ)

(mod2n+1)∴[y]補(bǔ)=[x+y]補(bǔ)-[x]補(bǔ)

(2.19a)∵[x-y]補(bǔ)=[x+(-y)]補(bǔ)=[x]補(bǔ)+[-y]補(bǔ)∴[-y]補(bǔ)=[x-y]補(bǔ)-[x]補(bǔ)

(2.19b)將式(2.19a)與(2.19b)相加,得

[-y]補(bǔ)+[y]補(bǔ)=[x+y]補(bǔ)+[x-y]補(bǔ)-[x]補(bǔ)-[x]補(bǔ)=[x+y+x-y]補(bǔ)-[x]補(bǔ)-[x]補(bǔ)=[x+x]補(bǔ)-[x]補(bǔ)-[x]補(bǔ)=0故[-y]補(bǔ)=-[y]補(bǔ)(mod2n+1)(2.20)

從[y]補(bǔ)求[-y]補(bǔ)的法則是:對[y]補(bǔ)包括符號(hào)位“求反且最末位加1”,即可得到[-y]補(bǔ)。寫成運(yùn)算表達(dá)式,則為[-y]補(bǔ)=﹁[y]補(bǔ)+2-n

其中符號(hào)﹁表示對[y]補(bǔ)作包括符號(hào)位在內(nèi)的求反操作,2-n表示最末位的1[x1]補(bǔ)=10010[-x1]補(bǔ)=﹁[x1]補(bǔ)+2-4

=01101+00001=01110[x2]補(bǔ)=01101[-x2]補(bǔ)=﹁[x2]補(bǔ)+2-4

=10010+00001=10011

例13:已知x1=-1110,x2=+1101

求:[x1]補(bǔ),[-x1]補(bǔ),[x2]補(bǔ),[-x2]補(bǔ)例14:x=+1101,y=+0110,求x-y[x]補(bǔ)=01101,[y]補(bǔ)=00110[-y]補(bǔ)=11010

[x]

補(bǔ)01101

+[-y]

補(bǔ)

11010

[x-y]

補(bǔ)

100111

所以x-y=+01112.2.3

溢出概念與檢驗(yàn)方法兩個(gè)正數(shù)相加,結(jié)果為負(fù)(即:大于機(jī)器所能表示的最大正數(shù)),稱為正溢。兩個(gè)負(fù)數(shù)相加,結(jié)果為正(即:小于機(jī)器所能表示的最小負(fù)數(shù)),稱為負(fù)溢。運(yùn)算出現(xiàn)溢出,結(jié)果就是錯(cuò)誤的[例15]

x=+1011,y=+1001,求x+y。[解:]

[x]補(bǔ)=01011,[y]補(bǔ)=01001[x]補(bǔ)

01011+[y]補(bǔ)

01001[x+y]補(bǔ)

10100

兩正數(shù)相加,結(jié)果為負(fù),顯然錯(cuò)誤。--運(yùn)算中出現(xiàn)了“正溢”[例16]x=-1101,y=-1011,求x+y

。

解:[x]補(bǔ)=10011,[y]補(bǔ)=10101

[x]補(bǔ)

10011

+[x]補(bǔ)

10101

——————————————

[x+y]補(bǔ)

01000

兩個(gè)負(fù)數(shù)相加的結(jié)果成為正數(shù),表示負(fù)溢。2/6/20235:13AM1)兩個(gè)數(shù)太大:產(chǎn)生進(jìn)位而改變了符號(hào)位;

1、兩異號(hào)數(shù)相加或兩同號(hào)數(shù)相減是否會(huì)產(chǎn)生溢出?2、僅當(dāng)兩同號(hào)數(shù)相加或兩異號(hào)數(shù)相減時(shí)才有可能產(chǎn)生溢出?問題:決不會(huì)產(chǎn)生溢出正確2、溢出原因:“溢出”檢測方法:第一種方法:采用雙符號(hào)位法,

稱為“變形補(bǔ)碼”或“模4補(bǔ)碼”。用“00”表示正數(shù),“11”表示負(fù)數(shù),兩個(gè)符號(hào)位同時(shí)參加運(yùn)算,如果運(yùn)算結(jié)果兩符號(hào)位相同,則沒有溢出發(fā)生。如果運(yùn)算結(jié)果兩符號(hào)位不同,則表明產(chǎn)生了溢出。“10”表示負(fù)溢出(下溢出),說明運(yùn)算結(jié)果為負(fù)數(shù),“01”表示正溢出(上溢出),說明運(yùn)算結(jié)果為正數(shù)。[例17]x=+1100,y=+1000,求x+y

。

解:[x]補(bǔ)=001100,[y]補(bǔ)=001000

[x]補(bǔ)00

1100

+[y]補(bǔ)001000

————————————————

[x+y]補(bǔ)010100

(表示正溢)

[例18]x=-1100,y=-1000,求x+y

。

解:[x]補(bǔ)=110100,[y]補(bǔ)=111000

[x]補(bǔ)110100

+[y]補(bǔ)111000

————————————————

[x+y]補(bǔ)101100

(表示負(fù)溢)

第二種方法:單符號(hào)位法當(dāng)最高有效位產(chǎn)生進(jìn)位而符號(hào)位無進(jìn)位時(shí),產(chǎn)生上溢;當(dāng)最高有效位無進(jìn)位而符號(hào)位有進(jìn)位時(shí),產(chǎn)生下溢。故溢出邏輯表達(dá)式為V=Cf⊕C0,其中Cf為符號(hào)位產(chǎn)生的進(jìn)位,C0為最高有效位產(chǎn)生的進(jìn)位。(見例15、16)2.2.4基本的二進(jìn)制加法/減法器在計(jì)算機(jī)中完成兩個(gè)二進(jìn)制數(shù)相加的基本加法器有半加器和全加器。半加器在完成兩數(shù)相加時(shí),不需要考慮低位進(jìn)位。全加器用來完成兩個(gè)二進(jìn)制數(shù)相加,并且同時(shí)考慮低位的進(jìn)位,即全加器完成三個(gè)一位數(shù)相加的功能。2.2.4基本的二進(jìn)制加法/減法器全加器邏輯圖CiAiBiSiCi+1FACiAiBiSiCi+1輸出輸入0110100001101000100010100010111010111111表2-2全加器真值表2.2.4基本的二進(jìn)制加法/減法器全加器的表達(dá)式為:

Si=AiBi

Ci

Ci+1=AiBi+BiCi

+AiCi

一位全加器內(nèi)部邏輯圖

BCSiCi+1ABCAAiBiCi2.2.4基本的二進(jìn)制加法/減法器利用全加器可以實(shí)現(xiàn)兩數(shù)的和或差1、串行加法:從低位開始,每步只完成一位運(yùn)算的加法。串行加法器只需要全加器計(jì)算兩個(gè)n位數(shù)之和,需要n+1步(1位符號(hào)位),或n+2步(2位符號(hào)位)運(yùn)算。高位運(yùn)算只有等低位運(yùn)算完成后才能進(jìn)行,速度較慢2.2.4基本的二進(jìn)制加法/減法器圖2-2

行波進(jìn)位補(bǔ)碼加法/減法器FAFAFAFAFAS0S1Sn-1Bs1As1Bs2As2Cs2Cs1Ss2Ss1Bn-1An-1Cn-1Cn-2B1A1B0A0C1C2C0溢出M方式控制M=1減M=0加2.3定點(diǎn)乘法運(yùn)算2.3.1原碼并行乘法2.3.2補(bǔ)碼并行乘法2.3.1原碼并行乘法1.人工算法與機(jī)器算法的同異性設(shè)n位被乘數(shù)和乘數(shù)用定點(diǎn)整數(shù)表示

被乘數(shù)[x]原=xf

xn-1…x1x0

乘數(shù)[y]原=yf

yn-1…y1y0

則乘積

[z]原=(xf⊕yf)+(xn-1…x1x0)(yn-1…y1y0)兩個(gè)原碼表示的數(shù)相乘的運(yùn)算規(guī)則是:乘積的符號(hào)位由兩數(shù)的符號(hào)位按異或運(yùn)算得到,而乘積的數(shù)值部分則是兩個(gè)正數(shù)相乘之積。數(shù)值部分的運(yùn)算方法與普通的十進(jìn)制乘法類似。 設(shè)x=1101,y=1011.讓我們用人工算法求其乘積,其過程如下:2/6/20235:13AM人工算法11011011×1101110100001101+10001111

2.3.1原碼乘法缺點(diǎn)將多個(gè)數(shù)一次相加,機(jī)器難以實(shí)現(xiàn)。一般的加法器,只能把兩個(gè)輸入數(shù)相加,多個(gè)位積的同時(shí)輸入是無法實(shí)現(xiàn)的。乘積位數(shù)增長了一倍,即2n,而機(jī)器字長只有n位所以需要改進(jìn)方法一:硬件實(shí)現(xiàn)方法(串行的“加法和移位”),硬件結(jié)構(gòu)簡單,速度太慢(時(shí)間延遲太長).方法二:不帶符號(hào)位的陣列乘法器2.不帶符號(hào)的陣列乘法器m×n位不帶符號(hào)的陣列乘法器邏輯圖

每一個(gè)部分乘積項(xiàng)aibj叫做一個(gè)被加數(shù)。這m×n個(gè)被加數(shù)可以用m×n個(gè)“與”門并行地產(chǎn)生。

不帶符號(hào)的全加器(FA)陣列斜線為進(jìn)位輸出和輸入行波進(jìn)位加法器n(n-1)個(gè)全加器n×n個(gè)與門play5位×5位陣列乘法器的邏輯電路圖[例19]已知不帶符號(hào)的二進(jìn)制整數(shù)A=11011,B=10101,求每一部分乘積項(xiàng)aibj的值與p9p8…p0的值。解:

11011=A(2710)

×

10101=B(2110)

————————————

11011

a4b0=1,a3b0=1,a2b0=0,a1b0=1,a0b0=1

00000

a4b1=0,a3b1=0,a2b1=0,a1b1=0,a0b1=0

11011

a4b2=1,a3b2=1,a2b2=0,a1b2=1,a0b2=1

00000

a4b3=0,a3b3=0,a2b3=0,a1b3=0,a0b3=0

+11011

a4b4=1,a3b4=1,a2b4=0,a1b4=1,a0b4=1

————————————

1000110111=P

P=p9p8p7p6p5p4p3p2p1p0=1000110111(56710)

3、帶符號(hào)位的陣列乘法器陣列乘法器使用的求補(bǔ)電路

原理:采用按位掃描技術(shù),則從數(shù)最右端往左邊掃描,直到第一個(gè)1的時(shí)候,該位和右邊各位保持不變,左邊各數(shù)值位按位取反。

3.帶符號(hào)的陣列乘法器

(1)對2求補(bǔ)器電路

進(jìn)行求補(bǔ)的方法就是從數(shù)的最右端a0開始,由右向左,直到找出第一個(gè)“1”,其以左的每一個(gè)輸入位都求反。

E為“1”→對a求補(bǔ)

E為“0”→輸出=輸入

符號(hào)位可作控制信號(hào)E數(shù)值位play101001101

3.帶符號(hào)的陣列乘法器

當(dāng)乘積為負(fù)時(shí),將運(yùn)算結(jié)果變成帶符號(hào)數(shù)(補(bǔ)碼)符號(hào)位用做使能控制信號(hào)符號(hào)位異或的結(jié)果,用做使能控制*既適用于原碼乘法—

輸入為原碼,算前和算后求補(bǔ)不做任何動(dòng)作。*也適用于補(bǔ)碼乘法—輸入為補(bǔ)碼,算前轉(zhuǎn)換為原碼和算后求補(bǔ)。*符號(hào)單獨(dú)處理。*

A·B=P=p2n-1…p1p0

p2n=an⊕bn解:[x]原=01111,[y]原=11101,|x|=1111,|y|=1101

符號(hào)位運(yùn)算:0⊕1=1

1111

×

1101

————————————

1111

0000

1111

+1111

————————————

11000011

乘積符號(hào)為1,算后求補(bǔ)器輸出11000011,[x×y]原=111000011

換算成二進(jìn)制數(shù)真值是x·y=(-11000011)2=(-195)10

[例20]設(shè)x=+15,y=-13,用帶求補(bǔ)器的原碼陣列乘法器求出乘積x·y=?乘積符號(hào)位單獨(dú)運(yùn)算:x0⊕y0=1⊕1=0算后求補(bǔ)器輸出為11000011,最后補(bǔ)碼乘積值為[x·y]補(bǔ)=011000011=+195[例21]設(shè)x=-15,y=-13,用帶求補(bǔ)器的補(bǔ)碼陣列乘法器求出乘積x·y=?〔解〕輸入數(shù)據(jù)用補(bǔ)碼表示:

[x]補(bǔ)=10001,[y]補(bǔ)=10011

尾數(shù)部分算前求補(bǔ)器輸出為|x|=1111,|y|=1101。1111×11011111000011111111110000112.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ù)的絕對值相除求得。手工算除法x=–0.1011y=0.1101求x÷y0.10110.1101⌒0.011010.010010.0011010.0001010.000011010.00000111

1商符單獨(dú)處理心算上商余數(shù)不動(dòng)低位補(bǔ)“0”減右移一位的除數(shù)x÷y=–0.1101余數(shù)

0.0000011100.101000

??2.4.1原碼除法筆算特點(diǎn):(1)每次都是由心算來比較余數(shù)和除數(shù)的大小,余數(shù)大時(shí),商1;余數(shù)小時(shí),商0。(2)每做一次減法,總是保持余數(shù)不動(dòng),而除數(shù)向右移一位。(3)商的符號(hào)單獨(dú)處理。機(jī)器實(shí)現(xiàn):機(jī)器必須通過減法,余數(shù)為正夠減,余數(shù)為負(fù)表示不夠減。不夠減,則加上除數(shù),這叫恢復(fù)余數(shù)法;不夠減,下次加除數(shù),這叫加減交替法(即不恢復(fù)余數(shù)法)。

0.101001+[-y]補(bǔ)

1.0011.110001+[y]補(bǔ)

0.1110.101001+[-y]補(bǔ)×2-1

1.10010.001101+[-y]補(bǔ)×2-2

1.110011.111111+[y]補(bǔ)×2-2

0.00111

0.001101+[-y]補(bǔ)×2-3

1.1110010.000110例,x=0.101001,y=0.111,求x/y。

[x]補(bǔ)

=0.101001[y]補(bǔ)

=0.111[-y]補(bǔ)

=1.001∴q=q0.q1q2q3=0.101r=0.000110恢復(fù)余數(shù)恢復(fù)余數(shù)不夠減的次數(shù)不固定。注意:減法在機(jī)器中是通過補(bǔ)碼加法完成的。q0=0q1=1q2=0q3=1恢復(fù)余數(shù)法假設(shè)要計(jì)算x÷y,,當(dāng)上商qi時(shí),x減的是y×2-i,余數(shù)為r;r<0,表示不夠減,上商0,并恢復(fù)余數(shù),即r=r+y×2-i,下次減y×2-(i+1);∵

r+y×2-i-y×2-(i+1)=r+y×2-(i+1)

∴可不恢復(fù)余數(shù),下次對余數(shù)做加法。

這種不恢復(fù)余數(shù)除法,叫做加減交替法。加減交替法的原理

0.101001+[-y]補(bǔ)

1.0011.110001+[y]補(bǔ)×2-1

0.01110.001101+[-y]補(bǔ)×2-2

1.110011.111111+[y]補(bǔ)×2-30.0001110.000110例,x=0.101001,y=0.111,求x/y。

[x]補(bǔ)=0.101001,[y]補(bǔ)=0.111,[-y]補(bǔ)=1.001補(bǔ)碼移1位補(bǔ)碼移2位補(bǔ)碼移3位q=q0.q1q2q3=0.101r=0.000110加減法的步數(shù)固定!每步實(shí)際是做補(bǔ)碼加法!余數(shù)<0,商0,下次加;余數(shù)≥0,商1,下次減。q0=0q1=1q2=0q3=1加減交替法(結(jié)果和恢復(fù)對比)2.4.2并行除法器

1.可控加、減法(CAS)單元P=0,這時(shí)A+B+Ci,Ci是進(jìn)位怎樣實(shí)現(xiàn)A-B?P=1,這時(shí)A+B+Ci,Ci是借位P=0,加P=1,減加減交替法的陣列除法器P=1,首次做減法。反饋線做最右邊CAS的Ci輸入!當(dāng)P=1,C3=1,實(shí)現(xiàn)+[-B]補(bǔ)當(dāng)P=0,C4=0,實(shí)現(xiàn)+[B]補(bǔ)

0.101001+[-y]補(bǔ)

1.0011.110001+[y]補(bǔ)×2-1

0.01110.001101+[-y]補(bǔ)×2-2

1.110011.111111+[y]補(bǔ)×2-30.0001110.0001102.5定點(diǎn)運(yùn)算器的組成運(yùn)算器的基本組成算術(shù)/邏輯運(yùn)算單元(ALU)、數(shù)據(jù)緩沖寄存器、通用寄存器、多路轉(zhuǎn)換器、數(shù)據(jù)總線等。2.5.1

邏輯運(yùn)算計(jì)算機(jī)中除了進(jìn)行加、減、乘、除等基本算術(shù)運(yùn)算外,還可對兩個(gè)或一個(gè)邏輯數(shù)進(jìn)行邏輯運(yùn)算。所謂邏輯數(shù)是指不帶符號(hào)的二進(jìn)制數(shù)。利用邏輯運(yùn)算可以進(jìn)行兩個(gè)數(shù)的比較,或者從某個(gè)數(shù)中選取某幾位等操作。主要有邏輯非(反)、邏輯加(或)、邏輯乘(與)、邏輯異或四種基本運(yùn)算。2/6/20235:13AM1.邏輯非運(yùn)算

邏輯非也稱求反。如:

x1=01001011,x2=11110000,求x1,x2。x1=10110100x2=000011112.邏輯加運(yùn)算按位求它們的“或”x=10100001,y=10011011,求x+y。

10100001x

+

10011011y

10111011z3.邏輯乘運(yùn)算按位求它們的“與”

x=10111001,y=11110011,求x*y。

10111001x

*

11110011y

10110001z2/6/20235:13AM4.邏輯異運(yùn)算按位求它們的模2和x=10101011,y=11001100,求x⊕y。[解:]

10101011x

⊕11001100y

01100111z即x⊕y=011001112.5.2多功能算術(shù)邏輯運(yùn)算單元行波進(jìn)位加法器只能完成加、減法,不能完成多樣的算術(shù)運(yùn)算,同時(shí),還不能完成邏輯運(yùn)算。對全加器的輸入先進(jìn)行多樣化組合——一位算數(shù)/邏輯運(yùn)算單元。S0S1YiS2S3Xi00Ai00101AiBi01Ai+Bi10AiBi10Ai+Bi11011Ai邏輯表達(dá)式控制參數(shù)S0,S1,S2,S3

分別控制輸入Ai

和Bi,產(chǎn)生Yi和Xi的函數(shù)。Yi是受S0,S1控制的Ai和Bi的組合函數(shù)。Xi是受S2,S3控制的Ai和Bi組合函數(shù)。2.5.2多功能算術(shù)邏輯運(yùn)算單元Xi、Yi與控制參數(shù)(S0~S3)、輸入量(Ai、Bi)的關(guān)系歸納S0S1YiS2S3Xi00Ai00101AiBi01Ai+Bi10AiBi10Ai+Bi11011Ai一個(gè)ALU芯片包含多位算邏運(yùn)算電路,如4位、8位等。片內(nèi)第0位向第1位的進(jìn)位公式:片內(nèi)第1位向第2位的進(jìn)位公式:片內(nèi)第2位向第3位的進(jìn)位公式:片內(nèi)第3位的進(jìn)位(即整個(gè)4位的進(jìn)位)公式:令則G稱為進(jìn)位發(fā)生輸出,P稱為進(jìn)位傳遞輸出。行波進(jìn)位中,Ci依賴Ci-1;而這里的G、P使Cn+4只依賴X,Y,從而可快速產(chǎn)生高位ALU的進(jìn)位輸入?!舫斑M(jìn)位加法器(解決進(jìn)位問題)2.5.2多功能算術(shù)邏輯運(yùn)算單元playM=1執(zhí)行邏輯運(yùn)算74181ALU功能表十六位的ALU74181是4位先行進(jìn)位ALU,若用4片74181串聯(lián),即上面實(shí)現(xiàn)的是,片內(nèi)先行進(jìn)位,片間串行進(jìn)位。如果將四片74181的G、P輸出端送入到74182先行進(jìn)位部件(CLA),可實(shí)現(xiàn)第二級(jí)的先行進(jìn)位,即組與組之間的先行進(jìn)位。74181741817418174181CnCn+4CnCnCnCn+4Cn+4Cn+474181741817418174181CnCnCnCn+xCn+474182GPGPGPG0P0Cn+yG1P1Cn+zG2P2CnCnG3P3Cn+4G*P*此結(jié)構(gòu)實(shí)現(xiàn)16的全先行進(jìn)位。2.5.2多功能算術(shù)邏輯運(yùn)算單元

74182實(shí)現(xiàn)了什么?74182是先行進(jìn)位部件(CLA)。Cn+x=G0+P0CnCn+y=G1+P1Cn+x

=G1+G0P1+P0P1CnCn+z=G2+P2Cn+y

=G2+G1P2+G0P1P2+P0P1P2CnCn+4=G3+P3Cn+z=G3+G2P3+G1P2P3+G0P1P2+P0P1P2P3CnG*=G3+G2P3+G1P2P3+G0P1P2;P*=P0P1P2P374181741817418174181CnCnCnCn+xCn+474182GPGPGPG0P0Cn+yG1P1Cn+zG2P2CnCnG3P3Cn+4G*P*play例:利用74181、74182組成32位全先行進(jìn)位ALU。分析:每片181是4位ALU,∴需要8片74181。每片182支持4片181先行進(jìn)位,兩片182可實(shí)現(xiàn)用兩個(gè)16位全先行進(jìn)位部件級(jí)聯(lián)組成的32位ALU。串聯(lián)起來的32位ALU不是32位全先行進(jìn)位ALU。74181741817418174181CnCnCnCn+xCn+474182GPGPGPG0P0Cn+yG1P1Cn+zG2P2CnCnG3P3Cn+4G*P*16位內(nèi)進(jìn)位先行2個(gè)16位之間串行進(jìn)位181181181181181181181181182182CoutCin2.5.3內(nèi)部總線總線:將多個(gè)部件聯(lián)系起來,支持任兩個(gè)部件間的數(shù)據(jù)傳送。內(nèi)部總線:CPU中的部件間總線。外部總線:即系統(tǒng)總線,是CPU、存儲(chǔ)器、IO子系統(tǒng)之間的連線。單向總線:總是沿著一個(gè)方向傳送數(shù)據(jù)的總線。雙向總線:分時(shí)進(jìn)行兩個(gè)方向傳送數(shù)據(jù)的總線。play2.5.4定點(diǎn)運(yùn)算器的基本結(jié)構(gòu)基本結(jié)構(gòu)包括:ALU、陣列乘除器、寄存器、多路開關(guān)、三態(tài)緩沖器、數(shù)據(jù)總線等。結(jié)構(gòu)設(shè)計(jì)要點(diǎn):部件間如何傳送數(shù)據(jù)!單總線結(jié)構(gòu)總線*任何時(shí)刻,只能有一個(gè)數(shù)據(jù)在總線上;*

ALU需要兩個(gè)緩沖器,送兩個(gè)操作數(shù)需要兩次;*當(dāng)操作數(shù)都來自寄存器,執(zhí)行慢。*控制簡單。2.5.4定點(diǎn)運(yùn)算器的基本結(jié)構(gòu)雙總線結(jié)構(gòu)任何時(shí)刻,可有兩個(gè)數(shù)據(jù)在總線上。送兩個(gè)操作數(shù)到ALU,只需一個(gè)操作,但結(jié)果不能直接送總線;如果在ALU出端設(shè)緩沖器,則結(jié)果可直接連到總線。特殊寄存器分為兩組,通用寄存器的數(shù)據(jù)可送至任何一個(gè)特殊寄存器。2.5.4定點(diǎn)運(yùn)算器的基本結(jié)構(gòu)三總線結(jié)構(gòu)算術(shù)邏輯運(yùn)算可以一步完成。注意,輸出選通脈沖要考慮ALU的計(jì)算延遲。旁路器可用于總線間的直接傳送。play2.6浮點(diǎn)運(yùn)算方法和運(yùn)算器2.6.1浮點(diǎn)加法、減法運(yùn)算2.6.2浮點(diǎn)乘法、除法運(yùn)算2.6.3浮點(diǎn)運(yùn)算流水線2.6.1浮點(diǎn)加法、減法運(yùn)算運(yùn)算規(guī)則:浮點(diǎn)加/減法操作流程:0操作數(shù)檢查對階,“小階向大階看齊”尾數(shù)求和結(jié)果規(guī)格化,“向左規(guī)格化”、“向右規(guī)格化”舍入處理溢出判斷2.6.1浮點(diǎn)加法、減法運(yùn)算浮點(diǎn)加/減法操作流程0操作數(shù)檢查對于x±y,計(jì)算機(jī)先判斷x和y是否為浮點(diǎn)數(shù)零;如x=0,z=±y;如y=0,z=x。都不是零,進(jìn)入“對階”階段。對階先求;若,進(jìn)入“尾數(shù)求和”階段。否則,“小階向大階看齊”。假設(shè),將Mx右移位,Ex置為Ey。若大階向小階看齊,尾數(shù)左移,可能引起最高有效位的丟失,造成較大誤差。例:1.0110,左移2位,101.1010;右移2位,0.0101102.6.1浮點(diǎn)加法、減法運(yùn)算浮點(diǎn)加/減法操作流程尾數(shù)求和加法:[Mx+My]補(bǔ)=[Mx]補(bǔ)+[My]補(bǔ)減法:[Mx-My]補(bǔ)=[Mx]補(bǔ)-[My]補(bǔ)=[Mx]補(bǔ)+[-My]補(bǔ)

尾數(shù)結(jié)果為什么要規(guī)格化?

尾數(shù)加/減運(yùn)算之后得到的數(shù)可能不是規(guī)格化數(shù),為了增加有效數(shù)字的位數(shù),提高運(yùn)算精度,必須進(jìn)行結(jié)果規(guī)格化操作。例如:0.00011101或111.0011為非規(guī)格化數(shù)結(jié)果規(guī)格化

1/2≤|M|<1(跟IEEE754區(qū)分開) 對于原碼尾數(shù)最高位為1,對于補(bǔ)碼負(fù)數(shù)尾數(shù)最高位為0,設(shè)尾數(shù)用雙符號(hào)位表示,經(jīng)過加/減運(yùn)算之后,可能出現(xiàn)以下幾種情況:對于原碼00.1xx…x和11.1xx…x情況就是標(biāo)準(zhǔn)的規(guī)格化數(shù)。對于補(bǔ)碼00.1xx…x和11.0xx…x情況就是標(biāo)準(zhǔn)的規(guī)格化數(shù)。怎樣規(guī)格化?非規(guī)格化數(shù)據(jù)的處理

對于原碼表示的00.0xx…x和11.0xx…x需要使尾數(shù)左移以實(shí)現(xiàn)規(guī)格化.

對于補(bǔ)碼表示的00.0xx…x和11.1xx…x需要使尾數(shù)左移以實(shí)現(xiàn)規(guī)格化,這個(gè)過程稱為左規(guī)。尾數(shù)每左移一位,階碼相應(yīng)減1直至成為規(guī)格化數(shù)為止。

左規(guī)可以進(jìn)行多次。對于01.xxx…x和10.xxx…x這兩種情況在定點(diǎn)加減運(yùn)算中稱為溢出;但浮點(diǎn)加減運(yùn)算中,只表明此時(shí)尾數(shù)的絕對值大于1,而并非真正的溢出。這種情況應(yīng)將尾數(shù)右移以實(shí)現(xiàn)規(guī)格化。這個(gè)過程稱為右規(guī)。尾數(shù)右移一位,階碼相應(yīng)加1

右規(guī)最多只有一次。非規(guī)格化數(shù)據(jù)的處理練習(xí)原碼00.001010111.0101011補(bǔ)碼00.010111111.1010111溢出01.111011110.10110112.6.1浮點(diǎn)加法、減法運(yùn)算浮點(diǎn)加/減法操作流程舍入處理對階、結(jié)果向右規(guī)格化時(shí),尾數(shù)右移;尾數(shù)存儲(chǔ)長度有限!右移m次,會(huì)使尾數(shù)的最低m位丟失!0舍1入法最后移出1,則尾數(shù)末位加1;移出0,不做修正。恒置1法只要右移,尾數(shù)末尾恒置1。IEEE754中的四種舍入處理就近舍入(即四舍五入)若移出10010,即>10000,則尾數(shù)末位加1;若移出01111,即<10000,則直接截掉!若移出10000,若尾數(shù)末位為0,則截掉;反之,末位加1SE(8)M(23位)10010101+111001+10111SE…10111000SE…11002.6.1浮點(diǎn)加法、減法運(yùn)算浮點(diǎn)加/減法操作流程舍入處理IEEE754中的四種舍入處理朝0舍入向尾數(shù)絕對值變小方向舍入,即截掉移出部分。朝+∞舍入對于正數(shù),只要移出的數(shù)位有1,則尾數(shù)末位加1;對于負(fù)數(shù),直接截掉!朝-∞舍入對于正數(shù),直接截掉!對于負(fù)數(shù),只要移出的數(shù)位有1,則尾數(shù)末位加1。2.6.1浮點(diǎn)加法、減法運(yùn)算浮點(diǎn)加/減法操作流程溢出處理階碼上溢浮點(diǎn)數(shù)的指數(shù)e超出機(jī)器階碼表示的最大值。結(jié)合數(shù)符,可判定浮點(diǎn)數(shù)為+∞或-∞。階碼下溢浮點(diǎn)數(shù)的指數(shù)e超出機(jī)器階碼表示的最小值??膳卸ǜ↑c(diǎn)數(shù)0。尾數(shù)上溢尾數(shù)求和時(shí),產(chǎn)生向小數(shù)點(diǎn)左側(cè)的進(jìn)位,可右規(guī)消除!尾數(shù)下溢尾數(shù)右移時(shí),尾數(shù)最低位流出,可舍入處理!浮點(diǎn)加/減法操作流程※0操作數(shù)檢查※對階,“小階向大階看齊”※尾數(shù)求和※結(jié)果規(guī)格化,“左規(guī)”、“右規(guī)”※舍入處理※溢出判斷例28:x=2010×0.11011011,y=2100×(-0.10101100),求x+y。解:階碼采用雙符號(hào)位,階碼、尾數(shù)采用補(bǔ)碼表示

[x]?。?0010,0.11011011;[y]?。?0100,1.01010100

1)對階。

x對階(小階向大階看齊):[x]?。?0100,0.00110110(11)2)尾數(shù)求和。3)規(guī)格化。[Mx+My]補(bǔ)=1.10001010(11)0.00110110(11)+1.010101001.10001010(11)[Mx+My]補(bǔ)=1.00010101(10)4)舍入處理。采用0舍1入法,得:00011,1.000101105)判溢出。階碼符號(hào)位為00,不溢出。最后結(jié)果:

x+y=2011×(-0.11101010)

00011,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論