Lecture 5 運(yùn)算器-定點(diǎn)加減法_第1頁
Lecture 5 運(yùn)算器-定點(diǎn)加減法_第2頁
Lecture 5 運(yùn)算器-定點(diǎn)加減法_第3頁
Lecture 5 運(yùn)算器-定點(diǎn)加減法_第4頁
Lecture 5 運(yùn)算器-定點(diǎn)加減法_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

思考設(shè)X=-0.1010Y=0.0101求(X+Y)補(bǔ)和(X-Y)補(bǔ)設(shè)機(jī)器數(shù)字長為8位(含1位符號(hào)位)且A=–97,B=+41,用補(bǔ)碼求A

B思考定點(diǎn)整數(shù)、小數(shù)有原碼、補(bǔ)碼表示形式,手工在紙上怎么加減?舉例分析(兩正數(shù)相加、兩負(fù)數(shù)相加、正負(fù)兩個(gè)數(shù)相加)。(符號(hào)位直接參與運(yùn)算!)[x]原+[y]原=?[x+y]原;[x]原

+[-y]原=?[x-y]原[x]補(bǔ)+[y]補(bǔ)=?[x+y]補(bǔ);[x]補(bǔ)+[-y]補(bǔ)=?[x-y]補(bǔ)計(jì)算機(jī)中表示數(shù)據(jù)的寄存寄或存儲(chǔ)單元長度固定,如果運(yùn)行結(jié)果超過這個(gè)長度會(huì)產(chǎn)生什么結(jié)果?什么情況下會(huì)發(fā)生超出表示范圍的現(xiàn)象?這個(gè)結(jié)果能否被利用?試從計(jì)算機(jī)的角度來判斷運(yùn)算結(jié)果什么時(shí)候出錯(cuò)了?定點(diǎn)數(shù)加減運(yùn)算課程結(jié)構(gòu)計(jì)算機(jī)系統(tǒng)統(tǒng)計(jì)硬件運(yùn)算器數(shù)據(jù)表示數(shù)據(jù)數(shù)據(jù)定點(diǎn)原碼反碼補(bǔ)碼移碼浮點(diǎn)一般表示規(guī)格化IEEE754非數(shù)值數(shù)據(jù)字符漢字BCD碼校驗(yàn)碼奇偶校驗(yàn)海明校驗(yàn)循環(huán)冗余校驗(yàn)運(yùn)算方法定點(diǎn)數(shù)補(bǔ)碼加減乘除浮點(diǎn)數(shù)加減乘除規(guī)格化溢出判斷運(yùn)算器一般運(yùn)算快速運(yùn)算典型ALU存儲(chǔ)器控制器總線輸入輸出軟硬件接口軟件主要內(nèi)容定點(diǎn)補(bǔ)碼加減法溢出檢測(cè)基本加法器解:[A]補(bǔ)[B]補(bǔ)[A]補(bǔ)

+[B]補(bǔ)+=0.1011=1.1011=10.0110=[A+B]補(bǔ)驗(yàn)證例設(shè)A=0.1011,B=–

0.0101求[A+B]補(bǔ)0.1011–0.01010.0110∴A+B

=0.0110[A]補(bǔ)[B]補(bǔ)[A]補(bǔ)

+[B]補(bǔ)+=1,0111=1,1011=11,0010=[A+B]補(bǔ)驗(yàn)證–1001–1110–0101+例設(shè)A=–9,B=–5求[A+B]補(bǔ)解:∴A+B

=–1110①

補(bǔ)碼加法的運(yùn)算公式為:[x+y]補(bǔ)=[x]補(bǔ)+[y]補(bǔ)②

補(bǔ)碼減法的運(yùn)算公式為:[x-y]補(bǔ)=

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

③加減法運(yùn)算規(guī)則:·參加運(yùn)算的數(shù)都用補(bǔ)碼表示。·數(shù)據(jù)的符號(hào)與數(shù)據(jù)一樣參加運(yùn)算?!で蟛顣r(shí)將減數(shù)求補(bǔ),用求和代替求差。·運(yùn)算結(jié)果為補(bǔ)碼。如果符號(hào)位為0,表明運(yùn)算結(jié)果為正;如果符號(hào)位為1,則表明運(yùn)算結(jié)果為負(fù)?!し?hào)位的進(jìn)位為模值,應(yīng)該丟掉。定點(diǎn)補(bǔ)碼加減法①補(bǔ)碼加法的運(yùn)算公式為:[x+y]補(bǔ)=[x]補(bǔ)+[y]補(bǔ)證明:下面以模為2定義的補(bǔ)碼為例,分幾種情況來證明這個(gè)公式。

(1)

x>0,y>0,則x+y>0

由于參加運(yùn)算的數(shù)都為正數(shù),故運(yùn)算結(jié)果也一定為正數(shù)。又由于正數(shù)的補(bǔ)碼與真值有相同的表示形式,即[x]補(bǔ)=x[y]補(bǔ)=y(tǒng)

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

(2)x>0,y<0,則x+y>0或x+y<0

當(dāng)參加運(yùn)算的數(shù)一個(gè)為正數(shù),一個(gè)為負(fù)數(shù)時(shí),則運(yùn)算結(jié)果有正、負(fù)兩種可能。根據(jù)補(bǔ)碼定義有:

[x]補(bǔ)=x[y]補(bǔ)=2+y所以[x]補(bǔ)+[y]補(bǔ)=2+(x+y)當(dāng)x+y>0時(shí),2+(x+y)>2,2為符號(hào)位進(jìn)位,即模丟掉。又因?yàn)?x+y)>0,所以

[x]補(bǔ)+[y]補(bǔ)=x+y=[x+y]補(bǔ)當(dāng)x+y<0時(shí),2+(x+y)<2,又因?yàn)?x+y)<0,所以

[x]補(bǔ)+[y]補(bǔ)=2+x+y=[x+y]補(bǔ)這里應(yīng)將(x+y)看成一個(gè)整體。定點(diǎn)補(bǔ)碼加減法

(3)

x<0,

y>0,

則x+y>0或x+y<0

這種情況和第②種情況類似,即把x與y的位置對(duì)調(diào)即可得證。(4)

x<0,

y<0,

則x+y<0

由于參加運(yùn)算的數(shù)都為負(fù)數(shù),故運(yùn)算結(jié)果也一定為負(fù)數(shù)。又由于負(fù)數(shù)的補(bǔ)碼為:

[x]

補(bǔ)=

2+x[y]

補(bǔ)=

2+

y

所以

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

補(bǔ)=

2+(2+x+y)

由于x+y為負(fù)數(shù),其絕對(duì)值又小于1,那么(2+

x

y)就一定是小于2而大于1的數(shù),所以上式等號(hào)右邊的2必然丟掉,又因?yàn)閤+y<0,所以

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

(2+x+y)=

2+(x+y)=[x+y]

補(bǔ)

至此證明了在模為2的定義下,任意兩個(gè)數(shù)的補(bǔ)碼之和等于該兩個(gè)數(shù)之和的補(bǔ)碼。這是補(bǔ)碼加法的理論基礎(chǔ),其結(jié)論也適用于定點(diǎn)整數(shù)。

定點(diǎn)補(bǔ)碼加減法②

補(bǔ)碼減法的運(yùn)算公式為:

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

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

補(bǔ)

證明:因?yàn)閇x]補(bǔ)+[y]補(bǔ)=[x+y]補(bǔ)令x=-y代入,則有[-y]補(bǔ)+[y]補(bǔ)=[-y+y]補(bǔ)=[0]補(bǔ)

=0

所以-[y]補(bǔ)=[-y]補(bǔ)所以:[x]補(bǔ)-[y]補(bǔ)=[x]補(bǔ)+(-[y]補(bǔ))=[x]補(bǔ)+[-y]

補(bǔ)

定點(diǎn)補(bǔ)碼加減法

不難發(fā)現(xiàn),只要能通過[y]

補(bǔ)求得[-y]

補(bǔ),就可以將補(bǔ)碼減法運(yùn)算化為補(bǔ)碼加法運(yùn)算。

已知[y]

補(bǔ),求[-y]

補(bǔ)的法規(guī)是:對(duì)[y]

補(bǔ)各位(包括符號(hào)位)取反、末位加1,就可以得到[-y]

補(bǔ)。

例如:已知[y]

補(bǔ)=1.1010,則[-y]

補(bǔ)=0.0110;又如:已知[y]

補(bǔ)=0.1110,則[-y]

補(bǔ)=1.0010;

定點(diǎn)補(bǔ)碼加減法證明:[-x]

補(bǔ)與[x]

補(bǔ)的關(guān)系。證明:①當(dāng)0≤x<1時(shí),設(shè)

[x]

補(bǔ)=0.x1x2…

xn

-x=-0.x1x2…

xn所以

[-x]

補(bǔ)=1.x1*x2*…

xn*

+2-n比較[x]

補(bǔ)和[-x]

補(bǔ),發(fā)現(xiàn)將[x]

補(bǔ)連同符號(hào)位求反,末位加1,即得[-x]

補(bǔ)。

②當(dāng)-1≤x<0時(shí),設(shè)

[x]

補(bǔ)=1.x1x2…

xn則

x

=-(0.x1*x2*…

xn*+2-n

)所以

-x=0.1.x1*x2*…

xn*+2-n故

[x]

補(bǔ)=0.…+2-n比較[x]

補(bǔ)和[-x]

補(bǔ),發(fā)現(xiàn)將[x]

補(bǔ)連同符號(hào)位求反,末位加1,即得[-x]

補(bǔ)。(1)設(shè)X=-0.1010Y=0.0101求(X+Y)補(bǔ)和(X-Y)補(bǔ)解:(X)補(bǔ)

=1.0110(Y)補(bǔ)

=0.0101(-Y)補(bǔ)

=1.1011(X)補(bǔ)

1.0110(X)補(bǔ)

1.0110+(Y)補(bǔ)

0.0101+(-Y)補(bǔ)

1.1011(X+Y)補(bǔ)

1.1011(X-Y)補(bǔ)1.0001X+Y=-0.0101X-Y=-0.1111

加減法運(yùn)算示例(2)

設(shè)X=-0.1011Y=-0.0101求(X+Y)補(bǔ)和(X-Y)補(bǔ)解:(X)補(bǔ)

=1.0101(Y)補(bǔ)

=1.1011(-Y)補(bǔ)

=0.0101(X)補(bǔ)

1.0101(X)補(bǔ)

1.0101+(Y)補(bǔ)

1.1011+(-Y)補(bǔ)

0.0101(X+Y)補(bǔ)

1.0000(X-Y)補(bǔ)1.1010X+Y=-1X-Y=-0.0110

加減法運(yùn)算示例例練習(xí)1設(shè)x=y=,用補(bǔ)碼求x+y9161116x+y=–0.1100=1216–練習(xí)2設(shè)機(jī)器數(shù)字長為8位(含1位符號(hào)位)且A=–97,B=+41,用補(bǔ)碼求A

BA

–B=+1110110=+118錯(cuò)錯(cuò)主要內(nèi)容定點(diǎn)補(bǔ)碼加減法溢出檢測(cè)基本加法器溢出判斷

由于機(jī)器碼的位數(shù)通常是給定的(如16位字長,32位字長),因此,數(shù)的表示范圍是有限的,若兩數(shù)進(jìn)行加減運(yùn)算的結(jié)果超出給定的取值范圍,就會(huì)產(chǎn)生溢出。溢出是指運(yùn)算結(jié)果超過了數(shù)的表示范圍。兩個(gè)符號(hào)相同的數(shù)相加,才可能產(chǎn)生溢出;兩個(gè)符號(hào)相異的數(shù)相加,不可能產(chǎn)生溢出。例,X=+0.1011,Y=+0.1001,X+Y=?[X]補(bǔ)0.1011+[Y]補(bǔ)0.10011.0100此時(shí),兩個(gè)正數(shù)相加的結(jié)果成為負(fù)數(shù),顯然是錯(cuò)誤的。溢出判斷又如,X=-0.1101,Y=-0.1011,X+Y=?[X]補(bǔ)1.0011+[Y]補(bǔ)1.01010.1000兩個(gè)負(fù)數(shù)相加的結(jié)果成為正數(shù),這同樣是錯(cuò)誤的。為判斷溢出是否產(chǎn)生,可以采用三種檢測(cè)方法。溢出判斷1、單符號(hào)位操作檢測(cè)方法:當(dāng)運(yùn)算結(jié)果的符號(hào)位與操作數(shù)的符號(hào)位不一致時(shí),表示溢出;當(dāng)加數(shù)和被加數(shù)符號(hào)位不同時(shí),相加的結(jié)果絕對(duì)不會(huì)溢出。例,X=+0.1001,Y=+0.1110,是否溢出?

[X]補(bǔ)0.1001+[Y]補(bǔ)0.11101.0111

運(yùn)算結(jié)果產(chǎn)生溢出。XfYfSfV00111101其它0溢出判斷2、進(jìn)位檢測(cè)法Cf C0

0 0 正確(正數(shù))

0 1 上溢

1 0 下溢

1 1 正確(負(fù)數(shù))V=Cf

⊕C0,其中Cf為符號(hào)位產(chǎn)生的進(jìn)位,C0為最高有效位產(chǎn)生的進(jìn)位。看高位的進(jìn)位輸入與其進(jìn)位輸出是否一致從真值表可判斷當(dāng)兩個(gè)單符號(hào)位補(bǔ)碼進(jìn)行加減運(yùn)算時(shí),若最高數(shù)值位向符號(hào)位的進(jìn)位值C0與符號(hào)位產(chǎn)生的進(jìn)位輸出值Cf相同時(shí),則沒有溢出發(fā)生。如果兩個(gè)進(jìn)位值不同,則有溢出發(fā)生。溢出表達(dá)式:V=Cf⊕C0。設(shè)xf和yf表示兩個(gè)相加數(shù)的符號(hào),C0表示高位的進(jìn)位信號(hào),Cf表示符號(hào)位的進(jìn)位信號(hào),S表示結(jié)果的符號(hào),V為溢出信號(hào)

例,X=+0.1011,Y=+0.1101[X]補(bǔ)0.1011+[Y]補(bǔ)0.11011.1000若最高數(shù)值位向符號(hào)位的進(jìn)位為1,符號(hào)位產(chǎn)生的進(jìn)位為0,表示有溢出。又如,X=-0.1011,Y=-0.1100[X]補(bǔ)1.0101+[Y]補(bǔ)1.01000.1001若最高數(shù)值位向符號(hào)位的進(jìn)位為0,符號(hào)位產(chǎn)生的進(jìn)位為1,表示有溢出。溢出判斷3、變形補(bǔ)碼檢測(cè)法(雙符號(hào)位)方法:每個(gè)操作數(shù)在運(yùn)算時(shí)都采用兩個(gè)符號(hào)位,正數(shù)用00表示,負(fù)數(shù)用11表示,兩個(gè)符號(hào)位與碼值一起參加運(yùn)算;若運(yùn)算結(jié)果的兩個(gè)符號(hào)位的代碼不一致時(shí)表示溢出,兩個(gè)符號(hào)位代碼一致時(shí),沒有溢出。設(shè)左邊第一位為第一符號(hào)位Sf1,相鄰的為第二符號(hào)位Sf2,則溢出邏輯表達(dá)式:

V=Sf1⊕Sf2

若V=0無溢出;V=1有溢出。

溢出判斷主要內(nèi)容定點(diǎn)補(bǔ)碼加減法溢出檢測(cè)基本加法器基本的加法器基本的加法和減法器半加器

Hi=Ai⊕Bi

不考慮進(jìn)位全加器

考慮低位進(jìn)位Ci-1和向高位的進(jìn)位Ci

一位全加器真值表輸入輸出AiBiCiSiCi+10000000110010100110110010101011100111111基本的加法器基本的加法器-FA邏輯電路和框圖FA(全加器)邏輯電路圖FA框圖圖行波進(jìn)位的補(bǔ)碼加法/加法器基本的加法器-n位行波進(jìn)位加法器基本的加法器-n位行波進(jìn)位加法器B0A0MB1A1Bn-2An-2Bn-1An-1溢出S0S1Sn-2Sn-1一個(gè)“與”門或者一個(gè)“或”門的時(shí)間延遲為一個(gè)T,異或門為3T0時(shí)刻3T時(shí)刻4T時(shí)刻6T時(shí)刻6T+2T時(shí)刻9T時(shí)刻6T+4T時(shí)刻6T+2nT時(shí)刻6T+2(n-1)T時(shí)刻11T時(shí)刻6T+2(n-1)T+3T時(shí)刻6T+2nT+3T時(shí)刻C0C2Cn-1C1Cn并行加法器由知令&A1B1=1A0B0=1A1B1C0&&A0B0&&C2基本的加法器-實(shí)現(xiàn)加法的邏輯圖①實(shí)現(xiàn)加法時(shí)應(yīng)提供以下控制信號(hào):A→ALU,B→ALU,+,ALU→A②實(shí)現(xiàn)減法時(shí)應(yīng)提供以下控制信號(hào):A→ALU,B*→ALU,ALU+1,+,ALU→A小結(jié)定點(diǎn)補(bǔ)碼加減法運(yùn)算方法,理解減法運(yùn)算用加法來實(shí)現(xiàn)三種溢出檢測(cè)方法及溢出判斷的邏

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論