




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
計(jì)算機(jī)組成原理與系統(tǒng)結(jié)構(gòu)
QY第4章運(yùn)算方法與運(yùn)算器
?定點(diǎn)數(shù)的加減運(yùn)算及實(shí)現(xiàn)
會(huì)定點(diǎn)數(shù)的乘法運(yùn)算及實(shí)現(xiàn)
傘定點(diǎn)數(shù)除法運(yùn)算及實(shí)現(xiàn)」
■定點(diǎn)運(yùn)算器的組成與結(jié)構(gòu)
?浮點(diǎn)運(yùn)算及運(yùn)算器
■浮點(diǎn)運(yùn)算器舉例
BACK
4.1定點(diǎn)數(shù)的加減運(yùn)算及實(shí)現(xiàn)
補(bǔ)碼加減運(yùn)算與運(yùn)算器
機(jī)器數(shù)的移位運(yùn)算
移碼加減運(yùn)算與判溢
U!十進(jìn)制加法運(yùn)算
QY一、?補(bǔ)碼加減運(yùn)算與運(yùn)算器
0補(bǔ)碼加減運(yùn)算方法
6補(bǔ)碼加減運(yùn)算的溢出判斷
補(bǔ)碼加減運(yùn)算器的實(shí)現(xiàn)
、補(bǔ)碼加減運(yùn)算方法
?:?補(bǔ)碼的加減運(yùn)算的公式是:
[X+Y]補(bǔ)=[X]補(bǔ)+[丫]補(bǔ)
[X-Y]補(bǔ)=[X]補(bǔ)+[-丫1補(bǔ)
*華寺點(diǎn):
■雇用補(bǔ)碼進(jìn)行加減運(yùn)算,符號(hào)位和數(shù)值位一樣參
加運(yùn)算。
■補(bǔ)碼的減法可以用加法來(lái)實(shí)現(xiàn),任意兩數(shù)之差的
補(bǔ)碼等于被減數(shù)的補(bǔ)碼與減數(shù)相反數(shù)的補(bǔ)碼之和。
5
6求補(bǔ)運(yùn)算:[Y]補(bǔ)一[一丫]補(bǔ)
?:?求補(bǔ)規(guī)則:將[Y]補(bǔ)包括符號(hào)位在內(nèi)每一位取反,末
位加1。
?:?若[Y]補(bǔ)=YO,Y1……Yn,則:
TO補(bǔ)=丫0丫1……Yn+1
?若[Y]補(bǔ)=YO.Y1...Yn,貝I]:
[-Y]補(bǔ)=Y。Yi……Yn+0.0……01
中例:[X]補(bǔ)=0.1101,則:[-X]#=10011
金[Y]補(bǔ)=1.1101,貝心[一丫]補(bǔ)=0.0011
6
?:?例:已知X=+10W,Y=-0100,用補(bǔ)碼計(jì)算X+Y和X-Y。
■寫(xiě)出補(bǔ)碼:
[X]補(bǔ)=0,1011[Y]^=1,1100
[-丫]補(bǔ)=0,0100
■計(jì)舁:
0,1011091011
+1,1100+0,0100
0,0111091111
[X+Y[b=0,0111[X—Y]補(bǔ)=0,1111
?
2、補(bǔ)碼加減運(yùn)算的溢出判斷
?:?當(dāng)運(yùn)算結(jié)果超出機(jī)器數(shù)的表示范圍時(shí),稱(chēng)為溢出。計(jì)
算機(jī)必須具備檢測(cè)運(yùn)算結(jié)果是否發(fā)生溢出的能力,否
則會(huì)得到錯(cuò)誤的結(jié)果。
?:?對(duì)于加減運(yùn)算,可能發(fā)生溢出的情況:同號(hào)(兩數(shù))
相加,或者異號(hào)(兩數(shù))相減。
?:?確定發(fā)生溢出的情況:
■正數(shù)相加,且結(jié)果符號(hào)位為1;
-負(fù)數(shù)相加,且結(jié)果符號(hào)位為0;
■正數(shù)一負(fù)數(shù),且結(jié)果符號(hào)位為1;
■負(fù)數(shù)一正數(shù),且結(jié)果符號(hào)位為0;
8
常用的判溢方法(補(bǔ)碼加減運(yùn)算)
?:?(1)單符號(hào)位判溢方法2
■當(dāng)最高有效位產(chǎn)生的進(jìn)位和符號(hào)位產(chǎn)生的進(jìn)位不
同時(shí),加減運(yùn)算發(fā)生了溢出。
■V=C1十4
(2)雙符號(hào)位判溢方法
■X和Y采用雙符號(hào)位補(bǔ)碼參加運(yùn)算,正數(shù)的雙符號(hào)
位為00,負(fù)數(shù)的雙符號(hào)位為11;當(dāng)運(yùn)算結(jié)果的兩
位符號(hào)Sf2不同時(shí)(01或10),發(fā)生溢出。
■V=Sf1?Sf2=Xf十丫千十Cf十Sf
■Sf1Sf2=01,則正溢出;Sf1Sf2=10,則負(fù)溢出。
9
雙符號(hào)位判溢方法舉例
?:?例:用補(bǔ)碼計(jì)算X+Y和X-Y
■(1)X=+1000,Y=+1001
■(2)X=-1000,Y=1001
兇補(bǔ)00,1000兇補(bǔ)00,1000
+[Y]補(bǔ)00,1001+[?Y]補(bǔ)11,0111
[X+Y]補(bǔ)01,0001[X-YJ411,1111
=
SfiSf2015JE■溢出Sf1Sf2=11?無(wú)溢出
兇補(bǔ)11,1000pq補(bǔ)11,iooo
?[Y]補(bǔ)00,1001+[?Y]補(bǔ)11,0111
[X+Y]補(bǔ)00,0001[X-Y]#10,1111
負(fù)溢出
Sf1Sf2=00,無(wú)溢出Sf1Sf2=10,
10
3、補(bǔ)碼加減運(yùn)算器
3、補(bǔ)碼加減運(yùn)算器的實(shí)現(xiàn)
?:?核心部件:一個(gè)普通的二進(jìn)制并行加法器。
?A:累加器,存放[X]補(bǔ);B:寄存器,存放[Y]補(bǔ);
?:?取反電路:
*3,SUB=。時(shí),補(bǔ)碼加法器,將B寄存器直接送入并
行加法器;_
*■/SUB=1時(shí),補(bǔ)碼減法器,4匏送入并行加法器,
同時(shí),并行加法器的最低位產(chǎn)生進(jìn)位,即B取反加1,
此時(shí)并行加法器的運(yùn)算相當(dāng)于[A]補(bǔ)力口[-B]補(bǔ),完成減
法運(yùn)算。
12
、機(jī)器數(shù)的移位運(yùn)算
?:?二進(jìn)制數(shù)據(jù)(真值)每相對(duì)于小數(shù)點(diǎn)左移一位,相當(dāng)
于乘以2;每相對(duì)于小數(shù)點(diǎn)右移一位,相當(dāng)于除以2。
?:?計(jì)算機(jī)中的移位運(yùn)算分為:
?1、邏輯移位:將移位的數(shù)據(jù)視為無(wú)符號(hào)數(shù)據(jù),各
數(shù)據(jù)位在位置上發(fā)生了變化,導(dǎo)致無(wú)符號(hào)數(shù)據(jù)的數(shù)
值(無(wú)正負(fù))放大或縮小。
■2、算術(shù)移位:將移位的數(shù)據(jù)視為帶符號(hào)數(shù)據(jù)(機(jī)
器數(shù))。算術(shù)移位的結(jié)果,在數(shù)值的絕對(duì)值上進(jìn)行
放大或縮小,同時(shí),符號(hào)位必須要保持不變。
■3、循環(huán)移位:所有的數(shù)據(jù)位在自身范圍內(nèi)進(jìn)行左
移或者右移,左移時(shí)最高位移入最低位,右移時(shí)最
低位移入最高位。
13
QY補(bǔ)碼的算術(shù)移位
?:?算術(shù)左移:符號(hào)位不變,高位移出,低位補(bǔ)0。
■為保證補(bǔ)碼算術(shù)左移時(shí)不發(fā)生溢出,移位的數(shù)據(jù)
最高有效位必須與符號(hào)位相同。
■在不發(fā)生溢出的前提下,用硬件實(shí)現(xiàn)補(bǔ)碼的算術(shù)
左移時(shí),直接將數(shù)據(jù)最高有效位移入符號(hào)位,不
會(huì)改變機(jī)器數(shù)的符號(hào)。
?:?算術(shù)右移:符號(hào)位不變,低位移出,高位正數(shù)補(bǔ)0,
負(fù)數(shù)補(bǔ)1,即高位補(bǔ)符號(hào)位。
符號(hào)位
fXf-----?X1X2--------?Xn----?
符號(hào)位
QY補(bǔ)碼的算術(shù)移位舉例
?:?例:設(shè)X=0.1001,丫=—0.0101,求
■伏]補(bǔ)=0.1001
■[2x1補(bǔ)=1.0010(溢出)
■[X/21補(bǔ)=0.0100
■[丫]補(bǔ)=1.1011
[2丫1補(bǔ)=1.0110
■[Y/2]補(bǔ)=LUOI
?
QY三、移碼加減運(yùn)算與判溢
篇碼和盜碼葉管
n
[X]移+[¥]移=2葉X+2+Y=2葉(2n+X+Y)=2n+[X+Y]移
n
[X]移+[-Y]移=2+[X—Y]移[X-Y]移=[X]移+[一Y]抖(mod2前)
?:?移碼和補(bǔ)碼混合計(jì)算
nn+1
[X]移+[Y]科=2葉X+”+i+Y="*+(2+X+Y)=2n+】+[X+Y]移=[X+Y]移(mod2)
n+1
[X-Y]移=[耳夠+[—Y]科(mod2)
?:?移碼運(yùn)算結(jié)果判溢:
0XfXix2.......xn
+YfYfYi丫2……Yn
SfiSf2Sis2……sn
16
移碼加減運(yùn)算與判溢
移碼運(yùn)算結(jié)果溢出的判斷條件是:
■當(dāng)結(jié)果的最高符號(hào)位Sf1二1時(shí)溢出,Sf1=0時(shí)結(jié)果
正確。
?Sf1Sf2=10時(shí),結(jié)果正溢出;
?Sf1Sf2=W時(shí),結(jié)果負(fù)溢出。
■由于移碼運(yùn)算用于浮點(diǎn)數(shù)的階碼,當(dāng)運(yùn)算結(jié)果正
溢出時(shí),浮點(diǎn)數(shù)上溢;當(dāng)運(yùn)算結(jié)果負(fù)溢出時(shí),浮
點(diǎn)數(shù)下溢,當(dāng)作機(jī)器零處理。
17
四、十進(jìn)制加法運(yùn)算
?:?計(jì)算機(jī)中的十進(jìn)制加法器通常采用BCD碼設(shè)計(jì),在二
進(jìn)制加法器的基礎(chǔ)上,加上適當(dāng)?shù)男U娐?,可以?shí)
現(xiàn)BCD碼的加法器。
?:?對(duì)于8421BCD碼來(lái)說(shuō),當(dāng)相加的兩數(shù)之和S>9時(shí),力口6
校正;當(dāng)SW9時(shí),且無(wú)進(jìn)位時(shí),結(jié)果正確,不需校正。
18
4.2定點(diǎn)數(shù)的乘法運(yùn)算及實(shí)現(xiàn)
原碼乘法及實(shí)現(xiàn)
補(bǔ)碼乘法及實(shí)現(xiàn)
陣列乘法器
一、原碼乘法及實(shí)現(xiàn)
?:?由于計(jì)算機(jī)的軟硬件在邏輯上具有一定的等價(jià)性,因
此實(shí)現(xiàn)乘除法運(yùn)算,可以有三種方式:
?I.用軟件實(shí)現(xiàn)。
■硬件上:設(shè)計(jì)簡(jiǎn)單,沒(méi)有乘法器和除法器。
■指令系統(tǒng):沒(méi)有乘除指令,但有加/減法和移位指
令
■實(shí)現(xiàn):乘除運(yùn)算通過(guò)編制一段子程序來(lái)實(shí)現(xiàn)
■算法:程序中運(yùn)用串行乘除運(yùn)算算法,循環(huán)累加、
右移指令一乘法,循環(huán)減、左移指令一除法。
■運(yùn)算速度:較慢。
■適用場(chǎng)合:?jiǎn)纹瑱C(jī)。
20
一、原碼乘法及實(shí)現(xiàn)
on.用硬件乘法器和除法器實(shí)現(xiàn)。
■硬件上:設(shè)置有并行加法器、移位器和若干循環(huán)、
計(jì)數(shù)控制邏輯電路搭成的串行乘除法器。
■指令系統(tǒng):具有乘除法指令。
■實(shí)現(xiàn):乘除運(yùn)算通過(guò)微程序一級(jí)(硬件+微程序)
來(lái)實(shí)現(xiàn)。
■算法:在微程序中依據(jù)串行乘除運(yùn)算算法,循環(huán)累
力口、右移指令一乘法,循環(huán)減、左移指令一除法。
■運(yùn)算速度:有所提高,但硬件設(shè)計(jì)也相對(duì)復(fù)雜。
■適用場(chǎng)合:低性能CPU。
21
一、原碼乘法及實(shí)現(xiàn)
?III.用高速的陣列乘法器和陣列除法器來(lái)實(shí)現(xiàn)。
■硬件上:設(shè)置有專(zhuān)用的、并行運(yùn)算的陣列乘法器和
陣列除法器。
■指令系統(tǒng):具有乘除法指令。
■實(shí)現(xiàn):完全通過(guò)硬件來(lái)實(shí)現(xiàn)。
■算法:并行乘/除法。
■運(yùn)算速度:很快,但硬件設(shè)計(jì)相當(dāng)復(fù)雜。
■適用場(chǎng)合:高性能CPU。
22
原碼乘法及實(shí)現(xiàn)
*1、手工乘法算法
■手工計(jì)算1011X1101,步驟:1011
■手工算法:對(duì)應(yīng)每1位乘數(shù)求得1項(xiàng)位
積,并將位積逐位左移,然后將所有X1101
的位積一次相加,得到最后的乘積。~~WH
■乘法的機(jī)器算法:從乘數(shù)的最低位開(kāi)
始,每次根據(jù)乘數(shù)位得到其位積,乘0000
數(shù)位為0,位積為0,乘數(shù)位為1,則
位積為被乘數(shù);用原部分積右移1位1011
加上本次位積,得新部分積;初始部
分積為0。1011
10001111
23
QY二、原碼乘法算法
?:*2、原碼一位乘法算法:
假設(shè)[X]原=XsX1X2.......Xn,[Y]原二YsY1
Y2……Yn,P=X-Y,Ps是積的符號(hào):
■符號(hào)位單獨(dú)處理ps=Xs十Ys
?絕對(duì)值進(jìn)行數(shù)值運(yùn)算|P|二|X|*|Y|
?:?例如:X=+1011,Y=-1101,用原碼一位乘法計(jì)算
P=X'YO
QY舉例
部分積乘數(shù)Y操作說(shuō)明
■[X]原二0,1011O,000011O1
?[Y]原=1,1101
+O,1011V4=l,+IX|
■Ps二Xs十Ys
O,1011
=0?1=1
右移—位
■|P|二|X|-|Y|O,0101111O
十O,0000V3=0,+0
O,0101
O,OO1O1111右移一位
+0,1011Y2=l,+|x|
O,1101
[P]原=L10001111
O,01101111右移—位
+0,1011V1=1,+Ix|
0001
0,1000右移一位
QH—、原碼乘法及實(shí)現(xiàn)
3、原碼乘法的硬件實(shí)現(xiàn)
000001101
27
gY第一次求部分積加運(yùn)算:+兇000001101
010111101
28
000001101
01011E1101
001011110
29
000001101
010111101
001011110
001011110
30
01011
01011
01011
01011
符號(hào)位異或
01011結(jié)果為:1,1000111
開(kāi)始
原碼一位乘法流程
結(jié)束
36
補(bǔ)碼乘法及實(shí)現(xiàn)
1、補(bǔ)碼乘法算法
(1)補(bǔ)碼一位乘法——校正法
假設(shè)[X]補(bǔ)=Xo.X1,
[丫]補(bǔ)=丫。4……I,
則有:
[X?Y]補(bǔ)二[知補(bǔ)?(0.Y1……YQ+Y°?[—X]補(bǔ)
37
補(bǔ)碼乘法及實(shí)現(xiàn)
證明如下:
■當(dāng)被乘數(shù)X的符號(hào)任意,Y為正數(shù)時(shí):
根據(jù)補(bǔ)碼定義有:
[X]補(bǔ)=2+X=2n+1+X(mod2)
[Y]補(bǔ)二Y
則:
[X]補(bǔ)?[Y]補(bǔ)=(2田+X)-Y=2田?丫+X-Y
=2n+i?(0.丫1.......Yn)+X?Y
=2-(丫1.......Yn)+X?Y=2+X-Y(mod2)
=[X?Y]補(bǔ)
即:Y>0時(shí),[X?Y]補(bǔ)二[X]補(bǔ)?[Y]補(bǔ)
二兇補(bǔ)?”……Yn)
38
補(bǔ)碼乘法及實(shí)現(xiàn)
■當(dāng)被乘數(shù)X的符號(hào)任意,Y為負(fù)數(shù)時(shí):
[Y]補(bǔ)=2+Y=1.丫1……Y”則:
丫=[Y]補(bǔ)一2=0.Y1……Yn-1
[X?Y]補(bǔ)二[X。丫1?????,Yn-X]補(bǔ)
=[X”……Yn]補(bǔ)+[-X]補(bǔ)
因?yàn)?.丫1......Yn>0,所以:
[X”……Yn]補(bǔ)=[X]補(bǔ)?”……Yn)
所以:Y<0時(shí),
[X?Y]補(bǔ)二兇補(bǔ)?(0.1?????.Yn)+[—X]補(bǔ)
39
Q<二、補(bǔ)碼乘法及實(shí)現(xiàn)
例如:X=+0.1011,Y=-0.1101,用補(bǔ)碼一位乘法的校正法計(jì)算P二XV。
[X]補(bǔ)=00.1011[Y]^1=11.0011[-X]^1=11.0101
部分積乘數(shù)Y操作說(shuō)明
00.00000011
+00.1011Y4=l,+[X]補(bǔ)
00.1011
00.01011001_右移一位
+00.1011Y3=l,+[X]補(bǔ)
01.0000
00.10000100右移一,位
+00.0000Y2=0,+0[X-Y]^=1.01110001
00.1000
00.01000010右移一位X-Y=-0.10001111
+00.0000Yi=O,+0
00.0100
00.00100001右移一位
+11.0101Vo=i,+[—X]補(bǔ)校lE
11.01110001
例:設(shè)X=—0.1101,Y二一0.1011,即:兇補(bǔ)二11.0011,[Y]補(bǔ)=11.0101,求[X*Y]補(bǔ)
部分積乘數(shù)說(shuō)明
00.00000101初始值
+[X]補(bǔ)11.0011+[X]補(bǔ)
11.0011—
右移一位11.1001]C1o右移—M立
+000.0000+0
11.1001—
右移一位1L1100]01右移—位
+[X]補(bǔ)11.0011+DG補(bǔ)
10.1111
右移一位11.0111111o右移--位
+000.0000+0
11.0111
右移一位
右移一位11.101111111
+「—X〕補(bǔ)00.1I01+[-X]補(bǔ)
00.10001111
計(jì)算結(jié)果:[X*Y]補(bǔ)=0.10001111
補(bǔ)碼乘法及實(shí)現(xiàn)
?(2)補(bǔ)碼一位乘法----Booth算法
做出如下推導(dǎo):
[X?Y]補(bǔ)二蟲(chóng)]補(bǔ)?(O.Yi……Yn)+Y°?[—X]補(bǔ)
=兇補(bǔ)?(丫/2一1+丫2?2-2++Y/2-n-Yo)
=[X]補(bǔ)?[Y/(2°-2-1)+Y2-(2-1-2-2)+.......+Yn-(2一村-
2-n)-Y0-20]
二補(bǔ)?[丫。-丫12n+1
[X]*p|1I?21I?2-1+YZ./2--Yz_/2-+.......+Yr'i2--Yr-i2-
n-Y0'20]
二兇補(bǔ)?[(丫廠丫。)?20+(Y2-丫1)?2-1+(Y3-Y2)?2一2+……+
(Yn-YQ51-YQ]
二[X]補(bǔ)?[(丫廣丫。)?2。+(Y2-YP?2-1+(Y3-丫2)?2一2+……+
(丫廣丫田)-2一,十(丫叼-Yn)-2-],0
-12n
=兇補(bǔ)?(a0-2°+a/2+a2-2^千二…++an-2-)
其中,將乘數(shù)Y的補(bǔ)碼在最末位添加一位附加位丫.
(初始為0),aLYj+「Yj,i=0,1,…??.,n-1,n。.
42
Booth算法的運(yùn)算規(guī)則
假設(shè)[Y]補(bǔ)=Y0,Y1……Yn
①被乘數(shù)X和乘數(shù)Y均以補(bǔ)碼的形式參加乘法運(yùn)算,運(yùn)算
的結(jié)果是積的補(bǔ)碼。
②部分積和被乘數(shù)X采用雙符號(hào)位,乘數(shù)丫采用單符號(hào)位。
③初始部分積為0;運(yùn)算前,在乘數(shù)丫的補(bǔ)碼末位后添加
一位附加位Yn+1,初始為0。
④根據(jù)YnYn+1的值,按照表4.3進(jìn)行累加右移操作,右移
時(shí)遵循補(bǔ)碼的移位規(guī)則。
⑤累加n+1次,右移n次,即最后一次不右移。
|表43補(bǔ)碼乘法的Booth算法操作表
*操作,
0-lj.+0,右移一位,,
1+[閩斗,右移一位2
b山+[-X]中右移一位,
1-1+0?右移一位c
43
例如:X=+0.1011,Y=-0.1101,用補(bǔ)碼一位乘法的Booth算法計(jì)算P二XV。
解:[X]補(bǔ)=00.1011[Y]^=11.0011[-X]^=11.0101
部分積乘數(shù)Y(丫口丫…)操作說(shuō)叨
00.00001.0011_0
+
11.0101Y4Y5=10,+[—X]補(bǔ)
11.0101
11.101011.0011右移一位
[X-Y]補(bǔ)=1.01110001
十00.0000Y3Y4=11,+0
11.1010
X-Y=-0.10001111
11.1101011.001右移一位
十00.1011丫2丫3=。1.+[X]補(bǔ)
00.1000
00.0100001100右移一位
+00.0000
YiV2=00,-+-0
00.0100
00.0010D0011,0右移一位
4-11.0101Y°Y『10,+E-x]補(bǔ)
11.01110001
二、補(bǔ)碼乘法及實(shí)現(xiàn)
2、補(bǔ)碼乘法的硬件實(shí)現(xiàn)
46
陣列乘法器
孝原理類(lèi)似于二進(jìn)制手工算法
■位積的每一位XiYj都可以用一個(gè)與門(mén)實(shí)現(xiàn),而每
位的相加均可以使用一個(gè)全加器來(lái)實(shí)現(xiàn)。
XXXX
1234
XYYYY
1234_______
XYXYXYXY
14243444
XYXYXYXY
13233343
XYXYXYXY
12223242
+XYXYXYXY
11213141
PPPPPPPP
12345678
47
絕對(duì)值陣列乘法器
48
補(bǔ)碼陣列乘法器
補(bǔ)碼求絕對(duì)值電路
先通過(guò)一個(gè)補(bǔ)碼求絕對(duì)值的邏輯電路變?yōu)榻^對(duì)值后,
送入絕對(duì)值陣列乘法器,運(yùn)算得到積的絕對(duì)值,然后
再通過(guò)一個(gè)絕對(duì)值求補(bǔ)碼的邏輯電路,根據(jù)積的符號(hào)
求出積的補(bǔ)碼形式。
49
補(bǔ)碼陣列乘法器
50
4.3定點(diǎn)數(shù)除法運(yùn)算及實(shí)現(xiàn)
原碼除法及實(shí)現(xiàn)
補(bǔ)碼除法及實(shí)現(xiàn)
陣列除法器
QH—、原碼除法及實(shí)現(xiàn)
1、原碼除法算法
?:?(D手工除法算法0.1101
■改進(jìn)手工算法即可適合機(jī)器運(yùn)算:0.1101]0,10110
■計(jì)算機(jī)通過(guò)做減法測(cè)試來(lái)實(shí)現(xiàn)1101
判斷:結(jié)果大于等于表明夠
0,10010
減,曲1;結(jié)果小于0,表明不
夠減,商0。1101
■計(jì)算機(jī)將余數(shù)左移一位,再直10100
接與不右移的除數(shù)相減。1101
X=+0.1011,Y=-0.11010111
X+Y
52
一、原碼除法及實(shí)現(xiàn)
?(2)原碼恢復(fù)余數(shù)算法
假設(shè)[X]原=Xs.X1X2.......Xn,[丫]原二丫$.丫1
Y2.......Yn,Q是X+Y的同,Qs是陶的符號(hào),R是
X小丫的余數(shù),Rs是余數(shù)的符號(hào)
■原碼除法運(yùn)算的規(guī)則是:
?1.Qs-Xs?Ys,Rs-Xs,|Q|-
|X|+|Y|-|R|+|Y|
?2.余數(shù)和被除數(shù)、除數(shù)均采用雙符號(hào)位;初
始余數(shù)為|X|。
53
一、原碼除法及實(shí)現(xiàn)
■原碼除法運(yùn)算的規(guī)則是:
?3.每次用余數(shù)減去|Y|(通過(guò)加上[-|丫|]補(bǔ)來(lái)
實(shí)現(xiàn)),若結(jié)果的符號(hào)位為0,則夠減,上商
1,余數(shù)左移一位;若結(jié)果的符號(hào)位為1,則
不夠減,上商0,先加|丫卜1灰復(fù)余數(shù),然后余
數(shù)左移一位。
?4.循環(huán)操作步驟3,共做n+1次,最后一次不
左移,但若最后一次上商0,則必須+|丫卜詼復(fù)
余數(shù);若為定點(diǎn)小數(shù)除法,余數(shù)則為最后計(jì)
算得到的余數(shù)右移n位的值。
54
被除數(shù)/余數(shù)商Q操作說(shuō)明
±1
00.10110000
+11.0011+[-IY|]補(bǔ)
例如:X=+0.1011,11.101100000R0<0,上商。
Y=-0.1101+00.1101+1Y|恢復(fù)余數(shù)
用原碼恢復(fù)余數(shù)算法計(jì)算00.1011
X+Y。
01.011O00000左移一位
解:[X]原=0.10。
+11.0011+[-IY|]補(bǔ)
1101
00.100100001_Ri>0,上商1
|X|=0.1011|Y|=0.1101
01.001000010左移一位
[-[丫|]補(bǔ)=11.0011
+11.0011+Y門(mén)補(bǔ)
G)S=Xg十丫s=Rg二0
00.010100011_R2>0,上商1
00.101000110—4立
得[Q]原=11101+11.0011+[-1Y]]補(bǔ)
11.110100110R<o,上商0
[R]原=0.000001113
+00.1101+1V|恢復(fù)余數(shù)
00.1010
01.010001100-4爻
+11.0011+[―IY門(mén)補(bǔ)
01101
00.0111R4>0,上商1
一、原碼除法及實(shí)現(xiàn)
?:?(3)原碼不恢復(fù)余數(shù)算法
-又稱(chēng)為加減交替法:當(dāng)某一次求得的差值(余
數(shù)%)為負(fù)時(shí),不是恢復(fù)它,而是繼續(xù)求下一位
商,但用加上除數(shù)(+|丫|)的辦法來(lái)取代
(-|Y|)操作,其他操作不變。
■其原理證明如下:
?在恢復(fù)余數(shù)除法中,若第iT次求商的余數(shù)
為RT,下一次求商的余數(shù)為用,貝八
R=2R.一|Y|
?如巢R/0,商的第i位上1,并執(zhí)行操作:
余數(shù)左移一位,再減|丫|,得以+1,貝%
Ri+1=2R-|Y|
56
一、原碼除法及實(shí)現(xiàn)
■如果RRO,商的第i位上0,并執(zhí)行操作:恢
復(fù)余數(shù)(+1丫|),將余數(shù)左移一位,再減|丫|,
得其過(guò)程可用公式表示如下:
Ri+1=2(&+|Y|)-|Y|=2Ri+2|Y|-|Y>2Ri+|Y|
■加減交替法的規(guī)則如下:
?余數(shù)為正時(shí),商上1,求下一位商的辦法,是
余數(shù)左移一位,再減去除數(shù);
?當(dāng)余數(shù)為負(fù)時(shí),商上0,求下一位商的辦法,
是余數(shù)左移一位,再加上除數(shù)。
?若最后一次上商為0,而又需得到正確余數(shù),
則在這最后一次仍需恢復(fù)余數(shù)。
57
被除數(shù)/余數(shù)商Q操作說(shuō)明
00.10110000
例如:X=+0.1011,
Y=-0.1101,用原碼不+11.0011+[-1Y]]補(bǔ)
恢復(fù)余數(shù)算法計(jì)算11.111000000R0<0,上商。
X+Y。11.110000000左—Y立
解:原
[X]=0.1011+00.1101+1Y|
[Y]原=1.1101
00.10010000工Ri>0,上商1
|X|=0,1011
|Y|=0.110101.001000010左—Y立
[-|Y|]補(bǔ)=11.0011+11.0011+[-1Y□補(bǔ)
00.01010001
Qs二Xs十Ys-11R2>0,上商1
RS二000.101000110左移一位
+11.0011+[-1Y]]補(bǔ)
11.110100110R3<O,上商。
[Q]原=1.1101
11.101001100左移一位
[R]原=0.00000111+00.1101+1Y|
00.011101101R4>0,上商1
QY—、原碼除法及實(shí)現(xiàn)
*2、原碼除法的硬件實(shí)現(xiàn)
A<|X|/余數(shù))Q(商IQI)Qn
7\
左移一位
緩沖骷
z\
Bi
計(jì)數(shù)器<斜>
并行加法器(n+2位)
=0
控制電路邏輯
7\7\n_n_n_
控制邏相:<>DIV
t
B(除數(shù)|Y|)
QY—、原碼除法及實(shí)現(xiàn)
原碼不恢復(fù)余數(shù)除法流程
計(jì)數(shù)器減1
補(bǔ)碼除法及實(shí)現(xiàn)
1、補(bǔ)碼除法算法
補(bǔ)碼不恢復(fù)余數(shù)除法的規(guī)則。假設(shè)[X]補(bǔ)=XS.X1
X2...Xn,[Y]補(bǔ)=YS.Y1Y2...Yn,Q是X+Y的
商,R是余數(shù),則補(bǔ)碼除法運(yùn)算的規(guī)則是:
①X和Y以補(bǔ)碼形式參加除法運(yùn)算,商也以補(bǔ)碼的形
式產(chǎn)生。余數(shù)和被除數(shù)、除數(shù)均采用雙符號(hào)位。
②當(dāng)[X]補(bǔ)與[Y]補(bǔ)同號(hào)時(shí),第一次做兇補(bǔ)+[-丫]補(bǔ)操作,
當(dāng)異號(hào)時(shí),第一次做[X]補(bǔ)+[Y]補(bǔ)操作,得到第一
次的部分余數(shù)[R0]補(bǔ)。
61
補(bǔ)碼除法及實(shí)現(xiàn)
補(bǔ)碼除法運(yùn)算的規(guī)則是:
③當(dāng)[Ri]補(bǔ)與[丫]補(bǔ)同號(hào)時(shí),上商1,然后余數(shù)先左移
一位,珈[-丫];、得到新余數(shù)[Ri+口補(bǔ);當(dāng)[Ri]補(bǔ)與
[Y]補(bǔ)異號(hào)時(shí),上商0,余數(shù)左移T立,力口[丫"卜得
到新余數(shù)[Ri+1]補(bǔ)。
④循環(huán)操作步驟③,共做n次,得到1位商符和(n-
1)位商的補(bǔ)碼數(shù)值位,最末位桌用恒置“1”法。
表4.4補(bǔ)碼除法的運(yùn)算操作表
上商
[X]與[Y]商符第一次操作[K]與[Y]下一步操作
真值補(bǔ)碼
減法同號(hào)(夠減)11余數(shù)左移一位,+[-Y]
同號(hào)0
[X]+[-¥]異號(hào)(不夠減)00余數(shù)左移一位,+[Y]
加法同號(hào)(不夠減)01余數(shù)左移一位,+[-Y]
異號(hào)1
[X]+[¥]異號(hào)(夠減)10余數(shù)左移一位,+[Y]
62
補(bǔ)碼除法及實(shí)現(xiàn)
第二種方法的運(yùn)算規(guī)則為:
①X和Y以補(bǔ)碼形式參加除法運(yùn)算,商也以補(bǔ)碼的形
式產(chǎn)生。余數(shù)和被除數(shù)、除數(shù)均采用雙符號(hào)位。
部分余數(shù)初始為[X]補(bǔ),即[R。]補(bǔ)=[X]補(bǔ)。
②當(dāng)[Ri]補(bǔ)與[丫]補(bǔ)同號(hào)時(shí),上商1,然后余數(shù)先左移
一位,加[-丫]補(bǔ)得到新余數(shù)[Ri+口補(bǔ);當(dāng)[Ri]補(bǔ)與
[Y]補(bǔ)異號(hào)時(shí),上商0,余數(shù)左移一位,加[-丫]補(bǔ)得
到新余數(shù)[Ri+1]補(bǔ)。
③循環(huán)操作步驟②,共做n次,得到1位商符和(n-1
位商的補(bǔ)碼數(shù)值位,最末位采用恒置“1”法。
63
補(bǔ)碼除法及實(shí)現(xiàn)
X=+0.1011,Y=-0.1101,用補(bǔ)碼不恢復(fù)余數(shù)算法計(jì)算
X4-Yo
兇補(bǔ)二00.1011[丫]補(bǔ)二.0011[-Y],,=00.1101
第一種方法
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030中國(guó)殺鼠劑行業(yè)市場(chǎng)現(xiàn)狀供需分析及重點(diǎn)企業(yè)投資評(píng)估規(guī)劃分析研究報(bào)告
- 2025-2030中國(guó)曲安奈德軟膏行業(yè)市場(chǎng)發(fā)展趨勢(shì)與前景展望戰(zhàn)略研究報(bào)告
- 2025-2030中國(guó)智能家居電器行業(yè)市場(chǎng)發(fā)展趨勢(shì)與前景展望戰(zhàn)略研究報(bào)告
- 醫(yī)療信息化進(jìn)程中的數(shù)據(jù)安全保護(hù)策略
- 2025-2030中國(guó)無(wú)線通訊檢測(cè)行業(yè)市場(chǎng)發(fā)展分析及發(fā)展趨勢(shì)與投資前景研究報(bào)告
- 2025-2030中國(guó)插芯執(zhí)手行業(yè)市場(chǎng)現(xiàn)狀分析及競(jìng)爭(zhēng)格局與投資發(fā)展研究報(bào)告
- 2025-2030中國(guó)投資金融行業(yè)市場(chǎng)深度調(diào)研及投資策略與投資前景研究報(bào)告
- 咨詢(xún)服務(wù)行業(yè)SWOT案例研究-洞察闡釋
- 互聯(lián)網(wǎng)+體育健身-洞察闡釋
- 2019-2025年一級(jí)造價(jià)師之建設(shè)工程技術(shù)與計(jì)量(水利)模擬題庫(kù)及答案下載
- 大學(xué)化學(xué)第03章-材料化學(xué)基礎(chǔ)
- 面癱患者的中醫(yī)護(hù)理常規(guī)
- 企業(yè)刑事合規(guī)培訓(xùn)課件
- 訂做門(mén)合同協(xié)議范本
- 2025年蘭州市九年級(jí)診斷考試(一診)物理試卷
- 2024年陪診師考試完整題庫(kù)試題及答案
- 2025-2030開(kāi)關(guān)電源行業(yè)市場(chǎng)發(fā)展分析及發(fā)展趨勢(shì)與投資戰(zhàn)略研究報(bào)告
- 【初中地理】西亞課件-2024-2025學(xué)年人教版(2024)七年級(jí)地理下冊(cè)
- (一模)2025年廣東省高三高考模擬測(cè)試 (一) 英語(yǔ)試卷(含官方答案及詳解)
- 項(xiàng)目實(shí)施進(jìn)度跟蹤與調(diào)整方案
- 鑄就數(shù)字堅(jiān)盾網(wǎng)絡(luò)安全技術(shù)知到課后答案智慧樹(shù)章節(jié)測(cè)試答案2025年春青島工學(xué)院
評(píng)論
0/150
提交評(píng)論