版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
二計(jì)算機(jī)組成原理第一頁(yè),共一百八十二頁(yè),編輯于2023年,星期五3.3定點(diǎn)數(shù)的運(yùn)算3.3.1移位運(yùn)算3.3.2補(bǔ)碼加減運(yùn)算與溢出3.3.3乘法運(yùn)算3.3.4除法運(yùn)算第二頁(yè),共一百八十二頁(yè),編輯于2023年,星期五3.3.1移位運(yùn)算移位運(yùn)算在計(jì)算機(jī)中有著非常重要的意義。例如在計(jì)算機(jī)中沒(méi)有乘、除法運(yùn)算的實(shí)現(xiàn)時(shí),可以用移位與加、減法運(yùn)算相結(jié)合的辦法進(jìn)行處理。第三頁(yè),共一百八十二頁(yè),編輯于2023年,星期五對(duì)定點(diǎn)表示的數(shù)據(jù),計(jì)算機(jī)中小數(shù)點(diǎn)的位置是事先約定的,因此,二進(jìn)制表示的機(jī)器數(shù)在相對(duì)于小數(shù)點(diǎn)作n位左移或右移時(shí),其實(shí)質(zhì)就是對(duì)該數(shù)乘以或除以2n。由于計(jì)算機(jī)中機(jī)器數(shù)的字長(zhǎng)往往是固定的,當(dāng)機(jī)器數(shù)左移或右移時(shí),必然會(huì)使數(shù)據(jù)的低位或高位出現(xiàn)空位,對(duì)空位是進(jìn)行補(bǔ)0還是補(bǔ)1與機(jī)器數(shù)表示的是有符號(hào)數(shù)還是無(wú)符號(hào)數(shù)有關(guān),對(duì)于有符號(hào)數(shù)的移位叫算術(shù)移位。第四頁(yè),共一百八十二頁(yè),編輯于2023年,星期五對(duì)于正數(shù),由于[X]原=[X]補(bǔ)=[X]反=真值,故移位后出現(xiàn)的空位均以0進(jìn)行補(bǔ)充。對(duì)于負(fù)數(shù),由于原碼、補(bǔ)碼和反碼的表示形式不同,故當(dāng)機(jī)器數(shù)移位時(shí),對(duì)其空位的填充規(guī)則也不同。表3-12列出了三種不同碼制的機(jī)器數(shù)移位后的添補(bǔ)規(guī)則。必須注意的是:不論是正數(shù)還是負(fù)數(shù),移位后其符號(hào)位均不變,這是算術(shù)移位的重要特點(diǎn)。第五頁(yè),共一百八十二頁(yè),編輯于2023年,星期五表3-12不同編碼機(jī)器數(shù)移位后的添補(bǔ)規(guī)則碼制添補(bǔ)代碼正數(shù)原碼、補(bǔ)碼、反碼0負(fù)數(shù)原碼0補(bǔ)碼左移添0右移添1反碼1第六頁(yè),共一百八十二頁(yè),編輯于2023年,星期五由上表可得出如下結(jié)論:(1)機(jī)器數(shù)為正時(shí),不論左移或右移,添補(bǔ)代碼都為0。(2)由于負(fù)數(shù)的原碼其數(shù)值部分與真值相同,故在移位時(shí)不論左移或右移,只要使符號(hào)位不變,其空位均補(bǔ)0。第七頁(yè),共一百八十二頁(yè),編輯于2023年,星期五(3)由于負(fù)數(shù)的反碼其數(shù)值位表示與真值正好相反,故移位后添補(bǔ)的均為1(此時(shí)仍需保持符號(hào)位不變),即相當(dāng)于對(duì)真值補(bǔ)0。第八頁(yè),共一百八十二頁(yè),編輯于2023年,星期五(4)分析任意負(fù)數(shù)的補(bǔ)碼可發(fā)現(xiàn)當(dāng)對(duì)其由低位向高位找到第一個(gè)“1”時(shí),在此“1”左邊的各位均與對(duì)應(yīng)的反碼相同,而在此“1”右邊的各位均與對(duì)應(yīng)的原碼相同。故負(fù)數(shù)的補(bǔ)碼左移時(shí),空位出現(xiàn)在低位,添補(bǔ)的代碼與原碼相同,即為0;右移時(shí),空位出現(xiàn)在高位,添補(bǔ)的代碼與反碼相同,即為1。第九頁(yè),共一百八十二頁(yè),編輯于2023年,星期五例:設(shè)機(jī)器數(shù)字長(zhǎng)為8位(含一位符號(hào)位),若X=±27,寫出X對(duì)應(yīng)的原碼、反碼和補(bǔ)碼的形式,并求出三種機(jī)器數(shù)左、右移一位后的表示形式及對(duì)應(yīng)的真值。有符號(hào)數(shù)的移位稱為算術(shù)移位,無(wú)符號(hào)數(shù)的移位稱為邏輯移位。邏輯移位的規(guī)則是:邏輯左移時(shí),高位移出,低位空位補(bǔ)0;邏輯右移時(shí),低位移出,高位空位補(bǔ)0。第十頁(yè),共一百八十二頁(yè),編輯于2023年,星期五3.3.2補(bǔ)碼加減運(yùn)算與溢出加減法運(yùn)算是計(jì)算機(jī)中最基本的算術(shù)運(yùn)算,一般計(jì)算機(jī)中都采用補(bǔ)碼表示來(lái)進(jìn)行實(shí)現(xiàn)。1、補(bǔ)碼加減運(yùn)算的基本公式補(bǔ)碼加法的基本公式為:[X+Y]補(bǔ)=[X]補(bǔ)+[Y]補(bǔ)第十一頁(yè),共一百八十二頁(yè),編輯于2023年,星期五按照補(bǔ)碼的定義,此公式可進(jìn)行嚴(yán)格的數(shù)學(xué)證明,以小數(shù)為例證明如下:證明:真值X、Y的符號(hào)共有四種情況。(1)X>0,Y>0,則X+Y>0根據(jù)補(bǔ)碼定義可得:[X]補(bǔ)+[Y]補(bǔ)=X+Y=[X+Y]補(bǔ)(Mod2)第十二頁(yè),共一百八十二頁(yè),編輯于2023年,星期五(2)X>0,Y<0根據(jù)補(bǔ)碼定義:[X]補(bǔ)=X,[Y]補(bǔ)=2+Y,則[X]補(bǔ)+[Y]補(bǔ)=2+(X+Y)①當(dāng)|X|≥|Y|時(shí),0≤X+Y<1(正數(shù)),模2時(shí),2+(X+Y)=X+Y所以[X]補(bǔ)+[Y]補(bǔ)=2+(X+Y)
=X+Y=[X+Y]補(bǔ)(Mod2)②當(dāng)|X|<|Y|時(shí),-1≤X+Y<0(負(fù)數(shù)),[X]補(bǔ)+[Y]補(bǔ)=2+(X+Y)=[X+Y]補(bǔ)第十三頁(yè),共一百八十二頁(yè),編輯于2023年,星期五(3)X<0,Y>0(可仿照(2)證明)(4)X<0,Y<0,則X+Y<0根據(jù)補(bǔ)碼定義:[X]補(bǔ)=2+X,[Y]補(bǔ)=2+Y,則[X]補(bǔ)+[Y]補(bǔ)=2+X+2+Y=2+(2+X+Y)因?yàn)椋╔+Y)<0,而且其絕對(duì)值又小于2,則0≤(2+X+Y)<2;在模2情況下,2+(2+X+Y)=2+X+Y=2+(X+Y)=[X+Y]補(bǔ)所以:[X]補(bǔ)+[Y]補(bǔ)=[X+Y]補(bǔ)第十四頁(yè),共一百八十二頁(yè),編輯于2023年,星期五由以上各種情況的證明,可得到結(jié)論:[X]補(bǔ)+[Y]補(bǔ)=[X+Y]補(bǔ)由補(bǔ)碼加法的基本公式,可得到補(bǔ)碼減法的基本公式:[X-Y]補(bǔ)=[X]補(bǔ)+[-Y]補(bǔ)即:[X-Y]補(bǔ)=[X+(-Y)]補(bǔ)=[X]補(bǔ)+[-Y]補(bǔ)。第十五頁(yè),共一百八十二頁(yè),編輯于2023年,星期五根據(jù)以上加減運(yùn)算的基本公式,可得到補(bǔ)碼運(yùn)算的規(guī)則如下:①、參加運(yùn)算的操作數(shù)均用補(bǔ)碼表示。②、符號(hào)位參與運(yùn)算。③、對(duì)于兩數(shù)相加減的各種情況,計(jì)算機(jī)都執(zhí)行求和操作。④、運(yùn)算結(jié)果仍為補(bǔ)碼表示。第十六頁(yè),共一百八十二頁(yè),編輯于2023年,星期五在補(bǔ)碼機(jī)器中,對(duì)于參與運(yùn)算的X和Y兩個(gè)數(shù),都以補(bǔ)碼形式表示在機(jī)器中,即機(jī)器內(nèi)存放的是[X]補(bǔ)和[Y]補(bǔ)的形式,所以對(duì)于加法運(yùn)算來(lái)說(shuō),比較簡(jiǎn)單,而對(duì)于減法運(yùn)算,需要考慮怎樣從[Y]補(bǔ)變換到[-Y]補(bǔ)的形式,然后參加運(yùn)算。第十七頁(yè),共一百八十二頁(yè),編輯于2023年,星期五不論Y的真值是正是負(fù),已知[Y]補(bǔ)求[-Y]補(bǔ)的方法都是將[Y]補(bǔ)的符號(hào)位連同數(shù)值位一起求反后末位加1,這是因?yàn)閅和-Y肯定為一正一負(fù),且絕對(duì)值相同。第十八頁(yè),共一百八十二頁(yè),編輯于2023年,星期五例:已知:x=0.1001,y=-0.0110,求x+y=?例:已知:x=-0.1001,y=-0.0101,求x+y=?例:已知:x=0.1001,y=0.0110,求x-y=?例:已知:x=-0.1001,y=-0.0110,求x-y=?第十九頁(yè),共一百八十二頁(yè),編輯于2023年,星期五2、溢出及其判別方法計(jì)算機(jī)的加法器和寄存器都有固定的位數(shù),當(dāng)選定了數(shù)據(jù)表示格式后,所能表示的數(shù)據(jù)范圍也就相應(yīng)確定了。當(dāng)運(yùn)算結(jié)果超出機(jī)器數(shù)所能表示的范圍時(shí),稱為溢出。第二十頁(yè),共一百八十二頁(yè),編輯于2023年,星期五例如:字長(zhǎng)4位,采用補(bǔ)碼表示,則表數(shù)范圍為-8~+7。如果x=+6,y=+3,則:
[x]補(bǔ)+[y]補(bǔ)=0110+0011=1001=[x+y]補(bǔ)可得x+y=-7,而正確結(jié)果應(yīng)該是+9。這是因?yàn)橹挥幸粋€(gè)符號(hào)位,使得結(jié)果符號(hào)錯(cuò)亂。在這種情況下,符號(hào)位是數(shù)值,如果當(dāng)作符號(hào),留下的結(jié)果將是不正確的。第二十一頁(yè),共一百八十二頁(yè),編輯于2023年,星期五兩個(gè)異號(hào)數(shù)相加不會(huì)產(chǎn)生溢出,只有兩同號(hào)數(shù)相加才有可能產(chǎn)生溢出。兩個(gè)同號(hào)數(shù)相減也不會(huì)出現(xiàn)溢出,只有兩個(gè)異號(hào)數(shù)相減才會(huì)出現(xiàn)溢出。當(dāng)兩個(gè)數(shù)據(jù)運(yùn)算的結(jié)果大于機(jī)器所能表示的最大正數(shù)時(shí)稱為正溢。運(yùn)算結(jié)果小于機(jī)器所能表示的最小負(fù)數(shù)時(shí)稱為負(fù)溢。第二十二頁(yè),共一百八十二頁(yè),編輯于2023年,星期五需要說(shuō)明的是,溢出是指運(yùn)算結(jié)果超出表數(shù)范圍,它既不是最高數(shù)值位向符號(hào)位的進(jìn)位,也不是符號(hào)位本身產(chǎn)生的進(jìn)位。下面通過(guò)幾個(gè)例子加以說(shuō)明。第二十三頁(yè),共一百八十二頁(yè),編輯于2023年,星期五當(dāng)最高數(shù)值位向符號(hào)位產(chǎn)生進(jìn)位時(shí),可能產(chǎn)生溢出(c),也可能不產(chǎn)生溢出(a)和(b);符號(hào)位本身產(chǎn)生的進(jìn)位也是如此。只有在最高數(shù)值位向符號(hào)位有進(jìn)位而符號(hào)位本身不產(chǎn)生進(jìn)位(c),或者最高數(shù)值位不向符號(hào)位產(chǎn)生進(jìn)位而符號(hào)位本身卻產(chǎn)生進(jìn)位(d)時(shí),才發(fā)生溢出。這可作為判斷溢出的條件。第二十四頁(yè),共一百八十二頁(yè),編輯于2023年,星期五補(bǔ)碼定點(diǎn)加減法運(yùn)算中,常用的判斷溢出的方法有兩種:(1)采用變形補(bǔ)碼判斷溢出變形補(bǔ)碼是采用2位符號(hào)位的補(bǔ)碼,即用“00”表示正號(hào),用“11”表示負(fù)號(hào)。它是以4為模的(對(duì)小數(shù)來(lái)說(shuō)),其定義為:[X]補(bǔ)=X0≤X<14+X-1≤X<0(mod4)第二十五頁(yè),共一百八十二頁(yè),編輯于2023年,星期五在采用變形補(bǔ)碼進(jìn)行加法運(yùn)算時(shí),兩位符號(hào)位與數(shù)值位同時(shí)參與運(yùn)算,而且高位產(chǎn)生的進(jìn)位自動(dòng)丟失(執(zhí)行了模4操作),則可以得到正確的結(jié)果。
[X+Y]補(bǔ)=[X]補(bǔ)+[Y]補(bǔ)第二十六頁(yè),共一百八十二頁(yè),編輯于2023年,星期五利用變形補(bǔ)碼進(jìn)行溢出判斷的原則是:如果結(jié)果的兩位符號(hào)位不相同,則表示溢出,否則沒(méi)有溢出(此時(shí)等同異或運(yùn)算)。不論在何種情況下,最高位即第一位符號(hào)位為真正的符號(hào)。第二十七頁(yè),共一百八十二頁(yè),編輯于2023年,星期五例如:[x]補(bǔ)=001010[y]補(bǔ)=001001
則[x+y]補(bǔ)=010011[x]補(bǔ)=110001[y]補(bǔ)=110111
則[x+y]補(bǔ)=101000
此兩例都為溢出的情況。第二十八頁(yè),共一百八十二頁(yè),編輯于2023年,星期五例如:[x]補(bǔ)=000101[y]補(bǔ)=000111
則[x+y]補(bǔ)=001100[x]補(bǔ)=111011[y]補(bǔ)=110111
則[x+y]補(bǔ)=110010
此兩例都為不溢出的情況。第二十九頁(yè),共一百八十二頁(yè),編輯于2023年,星期五在采用變形補(bǔ)碼進(jìn)行加減運(yùn)算時(shí),運(yùn)算結(jié)果的兩位符號(hào)應(yīng)該相同。如果兩個(gè)符號(hào)位同時(shí)為0,則表示結(jié)果為正數(shù);如果同時(shí)為1,則表示結(jié)果為負(fù)數(shù)。如果兩個(gè)符號(hào)位不同,則表示產(chǎn)生了溢出,且左邊的符號(hào)位表示結(jié)果的正確符號(hào),所以如果運(yùn)算結(jié)果的兩位符號(hào)位為“01”,則表示產(chǎn)生了正溢出;如果運(yùn)算結(jié)果的符號(hào)位為“10”,則表示產(chǎn)生了負(fù)溢出。第三十頁(yè),共一百八十二頁(yè),編輯于2023年,星期五需要說(shuō)明的是,在使用雙符號(hào)位時(shí),寄存器內(nèi)的操作數(shù)其實(shí)只需保存一個(gè)符號(hào)位就可以了,因?yàn)閷?duì)于任何正確的數(shù)據(jù),它的兩個(gè)符號(hào)位的值都是相同的。但是在加法器中又要有雙符號(hào)位,所以在相加時(shí),寄存器中的一位符號(hào)位的值要同時(shí)輸入到加法器中的兩個(gè)符號(hào)位中。第三十一頁(yè),共一百八十二頁(yè),編輯于2023年,星期五(2)利用符號(hào)位的進(jìn)位信息判斷溢出由于減法運(yùn)算在計(jì)算機(jī)中也是利用加法實(shí)現(xiàn)的,所以符號(hào)不同的數(shù)在進(jìn)行減法時(shí),減數(shù)的相反數(shù)在求補(bǔ)后的符號(hào)與被減數(shù)的符號(hào)應(yīng)該是一致的。因此,不論作加法還是減法,只要參加運(yùn)算的兩個(gè)操作數(shù)的符號(hào)相同,而運(yùn)算結(jié)果與參加運(yùn)算的原操作數(shù)的符號(hào)不同,就可以判定為溢出。第三十二頁(yè),共一百八十二頁(yè),編輯于2023年,星期五例如:[x]補(bǔ)=11011[y]補(bǔ)=10011[x+y]補(bǔ)=01110由于操作數(shù)的符號(hào)都為1,但結(jié)果的符號(hào)位為0,所以判定為溢出。又如:[x]補(bǔ)=11010[y]補(bǔ)=10111[x+y]補(bǔ)=10001由于結(jié)果的符號(hào)位與原操作數(shù)的符號(hào)位相同,所以判定為無(wú)溢出。第三十三頁(yè),共一百八十二頁(yè),編輯于2023年,星期五采用一位符號(hào)位進(jìn)行判斷是否溢出時(shí),為了節(jié)省時(shí)間,通常也可以使用符號(hào)位產(chǎn)生的進(jìn)位和數(shù)值最高有效位產(chǎn)生的進(jìn)位進(jìn)行異或操作。如果異或的結(jié)果為1則表示有溢出;異或結(jié)果為0則表示沒(méi)有溢出。第三十四頁(yè),共一百八十二頁(yè),編輯于2023年,星期五3、補(bǔ)碼加減運(yùn)算的電路圖3-6實(shí)現(xiàn)補(bǔ)碼加減運(yùn)算的邏輯電路第三十五頁(yè),共一百八十二頁(yè),編輯于2023年,星期五在該圖中,被加數(shù)(或被減數(shù))X和加數(shù)(或減數(shù))Y分別存放在A寄存器和B寄存器中,當(dāng)執(zhí)行加法運(yùn)算時(shí),執(zhí)行[X]補(bǔ)+[Y]補(bǔ),將[X]補(bǔ)和[Y]補(bǔ)從A寄存器和B寄存器送到加法器的兩個(gè)輸入端。當(dāng)執(zhí)行減法運(yùn)算時(shí),執(zhí)行[X]補(bǔ)+[-Y]補(bǔ),將運(yùn)算結(jié)果保存在A寄存器中。第三十六頁(yè),共一百八十二頁(yè),編輯于2023年,星期五在邏輯電路中,ALU由多個(gè)全加器及其他電路組成。每個(gè)全加器有三個(gè)輸入端,其中一個(gè)接收從低位來(lái)的進(jìn)位信號(hào),而最低位沒(méi)有進(jìn)位信號(hào)輸入,因此可利用來(lái)作為“+1”信號(hào)。第三十七頁(yè),共一百八十二頁(yè),編輯于2023年,星期五當(dāng)執(zhí)行加法時(shí),提供控制信號(hào)有:A→ALU,B→ALU,M=0(經(jīng)異或門控制B→ALU,同時(shí)最低位加0),ALU→A。當(dāng)執(zhí)行減法時(shí),提供控制信號(hào)有:A→ALU,B→ALU,M=1(經(jīng)異或門控制B#→ALU,同時(shí)最低位加1),ALU→A。其中ALU+1操作可以和加法操作同時(shí)進(jìn)行,所以總共只需要一次加法運(yùn)算。第三十八頁(yè),共一百八十二頁(yè),編輯于2023年,星期五3.3.3乘法運(yùn)算
在計(jì)算機(jī)中,乘法運(yùn)算是一種很重要的運(yùn)算,有的機(jī)器由硬件乘法器(見(jiàn)附錄1)直接完成乘法運(yùn)算,有的機(jī)器內(nèi)沒(méi)有乘法器,但可以按機(jī)器作乘法運(yùn)算的方法,用軟件編程實(shí)現(xiàn)。下面分別討論原碼和補(bǔ)碼的乘法運(yùn)算方法。第三十九頁(yè),共一百八十二頁(yè),編輯于2023年,星期五1、原碼乘法(1)定點(diǎn)原碼一位乘法考慮十進(jìn)制數(shù)的乘法規(guī)則及原碼表示方法的特點(diǎn),可得到原碼乘法的規(guī)則如下:兩個(gè)原碼數(shù)相乘,其乘積的符號(hào)為相乘兩數(shù)符號(hào)的異或值,數(shù)值則為兩數(shù)絕對(duì)值之積。第四十頁(yè),共一百八十二頁(yè),編輯于2023年,星期五假設(shè):[X]原=X0X1X2……Xn
[Y]原=Y0Y1Y2……Yn則:[X?Y]原=[X]原?[Y]原
=(X0⊕Y0)|(X1X2……Xn)?(Y1Y2……Yn)符號(hào)“|”表示把符號(hào)位和數(shù)值位拼接起來(lái)。第四十一頁(yè),共一百八十二頁(yè),編輯于2023年,星期五先來(lái)看手工乘法的運(yùn)算過(guò)程。設(shè)X=0.1101Y=0.1011,計(jì)算乘積X?Y。
0.1101×0.101111011101000011010.10001111第四十二頁(yè),共一百八十二頁(yè),編輯于2023年,星期五即X?Y=0.10001111,相乘兩數(shù)同號(hào),結(jié)果符號(hào)為正。在手工計(jì)算時(shí),逐次按乘數(shù)每位的取值是1還是0,決定相加數(shù)取被乘數(shù)的值還是取零值,而且相加數(shù)逐次向左偏移1位,最后一起相加求積。若計(jì)算機(jī)完全模擬筆算乘法步驟,將會(huì)有困難:第一,機(jī)器難以實(shí)現(xiàn)四個(gè)位積的一次相加;第二,乘積位數(shù)增長(zhǎng)了一倍。第四十三頁(yè),共一百八十二頁(yè),編輯于2023年,星期五為此,在計(jì)算機(jī)中的運(yùn)算方法作了如下改進(jìn):①、計(jì)算機(jī)一次加法操作只能求出兩數(shù)之和,因此每求得一個(gè)相加數(shù),就與上次部分積相加。②、在求本次部分積時(shí),前一次部分積的最低位不再參與運(yùn)算,因此可將其右移一位,相加數(shù)可直送而不必偏移,于是用N位加法器就可以實(shí)現(xiàn)兩個(gè)N位數(shù)相乘。第四十四頁(yè),共一百八十二頁(yè),編輯于2023年,星期五③、部分積右移時(shí),乘數(shù)寄存器同時(shí)右移一位,這樣可以一直用乘數(shù)寄存器的最低位來(lái)控制相加數(shù)(取被乘數(shù)或零),同時(shí)乘數(shù)寄存器的最高位可接收部分積右移出來(lái)的一位,因此,完成乘法運(yùn)算后,乘積分開(kāi)放在了兩個(gè)寄存器中。如圖3-7是計(jì)算機(jī)內(nèi)實(shí)現(xiàn)原碼乘法的邏輯框圖,其中A、B、C三個(gè)寄存器分別存放部分積、被乘數(shù)和乘數(shù)。第四十五頁(yè),共一百八十二頁(yè),編輯于2023年,星期五圖3-7實(shí)現(xiàn)原碼一位乘的邏輯電路框圖
第四十六頁(yè),共一百八十二頁(yè),編輯于2023年,星期五乘法開(kāi)始時(shí),A寄存器被清為零,作為初始部分積。被乘數(shù)放在B寄存器中,乘數(shù)放在C寄存器中。實(shí)現(xiàn)部分積和被乘數(shù)相加是通過(guò)給出A→ALU和B→ALU命令,在ALU中完成的。ALU的輸出經(jīng)過(guò)移位電路向右移一位送入A寄存器中。C寄存器是用移位寄存器實(shí)現(xiàn)的,其最低位用作B→ALU的控制命令。第四十七頁(yè),共一百八十二頁(yè),編輯于2023年,星期五加法器最低一位的值右移時(shí)將移入C寄存器的最高數(shù)值位,使相乘之積的低位部分保存進(jìn)C寄存器中,原來(lái)的乘數(shù)在逐次右移過(guò)程中丟失了。圖中還給出了一個(gè)計(jì)數(shù)器,用來(lái)控制逐次相乘的次數(shù)。它的初始值放乘數(shù)位數(shù),計(jì)算結(jié)束時(shí)給出結(jié)束乘運(yùn)算的控制信號(hào)。第四十八頁(yè),共一百八十二頁(yè),編輯于2023年,星期五由于在運(yùn)算過(guò)程中,被乘數(shù)寄存器的值保持不變,而部分積寄存器和乘數(shù)寄存器的值一直變化,可以用這兩個(gè)寄存器值的變化過(guò)程描述這種計(jì)算方法。例:設(shè)X=0.1101,Y=0.1011,求X?Y=?解:[X]原=01101[Y]原=01011,用數(shù)值位計(jì)算,部分積取雙符號(hào)位,實(shí)際用來(lái)保存加運(yùn)算時(shí)的進(jìn)位信息。第四十九頁(yè),共一百八十二頁(yè),編輯于2023年,星期五部分積乘數(shù)說(shuō)明000000+0011011011初始條件,部分積為0乘數(shù)低位為1,加被乘數(shù)001101000110+00110110111101右移1位,形成新的部分積,乘數(shù)右移,低位為1,加被乘數(shù)010011001001+00000011011110右移1位,形成新的部分積,乘數(shù)也右移,低位為0,加0001001000100+00110111101111右移1位,形成新的部分積,乘數(shù)右移后低位為1,加被乘數(shù)01000100100011111111右移1位,形成最后結(jié)果乘數(shù)各位全部被移出第五十頁(yè),共一百八十二頁(yè),編輯于2023年,星期五判定符號(hào),因?yàn)閄0⊕Y0=0⊕0=0,所以得到:
[X?Y]原=010001111
即:X?Y=+0.10001111第五十一頁(yè),共一百八十二頁(yè),編輯于2023年,星期五(2)定點(diǎn)原碼兩位乘法原碼兩位乘即從乘數(shù)的最低位開(kāi)始每次取兩位乘數(shù)與被乘數(shù)相乘得到一次部分積,它與原碼一位乘一樣,符號(hào)位的運(yùn)算和數(shù)值部分是分開(kāi)進(jìn)行的,但由于每次是用兩位乘數(shù)的狀態(tài)來(lái)決定新的部分積如何形成,因此運(yùn)算步驟減少,提高了運(yùn)算速度。第五十二頁(yè),共一百八十二頁(yè),編輯于2023年,星期五兩位乘數(shù)共有四種可能組合,每種組合對(duì)應(yīng)于以下操作:00——相當(dāng)于0?X。部分積Pi右移兩位,不進(jìn)行其他運(yùn)算。01——相當(dāng)于1?X。部分積Pi+X,右移兩位。10——相當(dāng)于2?X。部分積Pi+2X,右移兩位。11——相當(dāng)于3?X。部分積Pi+3X,右移兩位。第五十三頁(yè),共一百八十二頁(yè),編輯于2023年,星期五與前面的一位乘法相比,多出了+2X和+3X兩種情況。把X左移一位可得2X,在機(jī)器上可采用向左斜送1位來(lái)實(shí)現(xiàn)??墒?3X一般不能一次完成,如分成兩次進(jìn)行,又降低了計(jì)算速度。解決問(wèn)題的辦法是:以(4X-X)來(lái)代替3X運(yùn)算,在本次運(yùn)算中只執(zhí)行-X,而+4X歸并到下一步執(zhí)行。第五十四頁(yè),共一百八十二頁(yè),編輯于2023年,星期五此時(shí)部分積已右移了兩位,上一步欠下的+4X已變成+X。推導(dǎo)過(guò)程如下:設(shè)之前得到的部分積為Pi,右移兩位相當(dāng)于乘2-2。正常運(yùn)算為加3X右移兩位,即(Pi+4X-X)?2-2;此式子等于(Pi-X)?2-2+X,此時(shí)表示操作步驟為Pi減X后右移兩位再加X(jué)。第五十五頁(yè),共一百八十二頁(yè),編輯于2023年,星期五在實(shí)際線路中用一個(gè)觸發(fā)器C來(lái)記錄是否欠下+4X,若是,則1→C,控制在下一步補(bǔ)上所欠數(shù)據(jù)。因此實(shí)際操作用Yi-1、Yi、C三位來(lái)控制,運(yùn)算規(guī)則可如表3-13所示。第五十六頁(yè),共一百八十二頁(yè),編輯于2023年,星期五表3-13原碼兩位乘法規(guī)則Yi-1YiC操作000001010011100101110111(Pi+0)2-2(Pi+X)2-2(Pi+X)2-2(Pi+2X)2-2(Pi+2X)2-2(Pi-X)2-2(Pi-X)2-2(Pi+0)2-20→C0→C0→C0→C0→C1→C1→C1→C第五十七頁(yè),共一百八十二頁(yè),編輯于2023年,星期五例:已知X=-0.100111,Y=0.101110,求X?Y=?解:[X]原=1.100111,[Y]原=0.101110,
|X|=0.100111,[|X|]補(bǔ)=0.100111,
[-|X|]補(bǔ)=1.011001第五十八頁(yè),共一百八十二頁(yè),編輯于2023年,星期五部分積乘數(shù)欠位說(shuō)明000000000+)001001110001011100初始狀態(tài)100,部分積+2X0→C001001110000010011+)111011001100010110右移兩位110,部分積-|X|1→C111101100111111011+)111011001001000101右移兩位101,部分積-|X|1→C111010100111110101+)000100111000010001右移兩位001,部分積+X000011100000010001不移位,得到結(jié)果第五十九頁(yè),共一百八十二頁(yè),編輯于2023年,星期五判定符號(hào),因?yàn)閄0⊕Y0=1⊕0=1,所以得到:[X?Y]原=1011100000010
即X?Y=-0.011100000010對(duì)于原碼兩位乘,需注意:①、部分積和被乘數(shù)采用三個(gè)符號(hào)位。因?yàn)樵谠a兩位乘法中,有加2X的操作,因此絕對(duì)值有可能大于2。此時(shí)仍需保留進(jìn)位,以最高位的符號(hào)位作為處理過(guò)程中的符號(hào)。第六十頁(yè),共一百八十二頁(yè),編輯于2023年,星期五②、減|X|的操作是通過(guò)加[-|X|]補(bǔ)來(lái)實(shí)現(xiàn)的。這是因?yàn)樵a的減法實(shí)現(xiàn)麻煩,需考慮絕對(duì)值大小,并判斷結(jié)果符號(hào),不如先當(dāng)成補(bǔ)碼處理,因此,右移時(shí)按補(bǔ)碼的移位規(guī)則進(jìn)行處理。(減X時(shí)當(dāng)成補(bǔ)碼處理,有可能結(jié)果為負(fù),但每次的減都意味著下一步會(huì)補(bǔ)上所欠的4X,當(dāng)補(bǔ)上后結(jié)果肯定為正值,此時(shí)正數(shù)的補(bǔ)碼、原碼、絕對(duì)值都是一樣的。)第六十一頁(yè),共一百八十二頁(yè),編輯于2023年,星期五③、當(dāng)乘數(shù)為偶數(shù)個(gè)數(shù)值位時(shí),乘數(shù)的符號(hào)位設(shè)置兩位“00”,以便最后一步能處理前面可能留下的欠帳,但不用移位。當(dāng)乘數(shù)為奇數(shù)個(gè)數(shù)值位時(shí),乘數(shù)符號(hào)位可設(shè)置一位“0”,此時(shí)最后一次移一位。第六十二頁(yè),共一百八十二頁(yè),編輯于2023年,星期五2、補(bǔ)碼乘法(1)定點(diǎn)補(bǔ)碼一位乘法原碼乘法存在兩個(gè)明顯的缺點(diǎn):一是符號(hào)位需要單獨(dú)運(yùn)算,最后給運(yùn)算結(jié)果賦以正確符號(hào),這給運(yùn)算帶來(lái)麻煩;二是對(duì)于采用補(bǔ)碼存儲(chǔ)的機(jī)器,從存儲(chǔ)器或寄存器中取出的是操作數(shù)的補(bǔ)碼,需先將其轉(zhuǎn)換成原碼,然后才能進(jìn)行乘法運(yùn)算,再對(duì)結(jié)果轉(zhuǎn)換成補(bǔ)碼保存。很不方便。第六十三頁(yè),共一百八十二頁(yè),編輯于2023年,星期五①、補(bǔ)碼與真值之間的關(guān)系設(shè)[X]補(bǔ)=Xs.X1X2……Xn當(dāng)X≥0時(shí),Xs=0,[X]補(bǔ)=0.X1X2……Xn=X當(dāng)X<0時(shí),Xs=1,[X]補(bǔ)=1.X1X2……Xn=2+XX=1.X1X2……Xn-2=-1+0.X1X2……Xn=-Xs+0.X1X2……Xn所以:X=-Xs+0.X1X2……Xn第六十四頁(yè),共一百八十二頁(yè),編輯于2023年,星期五②、補(bǔ)碼乘法算法的推導(dǎo)設(shè)被乘數(shù)[X]補(bǔ)=Xs.X1X2……Xn,乘數(shù)[Y]補(bǔ)=Ys.Y1Y2……Yn,則有[X?Y]補(bǔ)=[X]補(bǔ)?Y證明:(1)被乘數(shù)X符號(hào)任意,乘數(shù)Y符號(hào)為正。第六十五頁(yè),共一百八十二頁(yè),編輯于2023年,星期五根據(jù)補(bǔ)碼定義:
[X]補(bǔ)=2+X=2n+1+X(mod2)
[Y]補(bǔ)=Y=0.Y1Y2……Yn[X]補(bǔ)?[Y]補(bǔ)=2n+1?Y+X?Y=2(Y1Y2……Yn)+X?Y其中,Y1Y2……Yn是大于0的正整數(shù),根據(jù)模運(yùn)算性質(zhì)有:
2(Y1Y2……Yn)=2(mod2)第六十六頁(yè),共一百八十二頁(yè),編輯于2023年,星期五得到[X]補(bǔ)?[Y]補(bǔ)=2+X?Y=[X?Y]補(bǔ)(mod2)即[X?Y]補(bǔ)=[X]補(bǔ)?[Y]補(bǔ)=[X]補(bǔ)?Y(2)被乘數(shù)X符號(hào)任意,乘數(shù)Y符號(hào)為負(fù)。
[X]補(bǔ)=Xs.X1X2……Xn[Y]補(bǔ)=1.Y1Y2……Yn=2+YY=[Y]補(bǔ)-2=0.Y1Y2……Yn-1則X?Y=X(0.Y1Y2……Yn)-X第六十七頁(yè),共一百八十二頁(yè),編輯于2023年,星期五[X?Y]補(bǔ)=[X(0.Y1Y2……Yn)-X]補(bǔ)
=[X(0.Y1Y2……Yn)]補(bǔ)+[-X]補(bǔ)
=[X(0.Y1Y2……Yn)]補(bǔ)-[X]補(bǔ)因?yàn)?.Y1Y2……Yn>0,根據(jù)上面的討論,則:[X(0.Y1Y2……Yn)]補(bǔ)
=[X]補(bǔ)(0.Y1Y2……Yn)得到:
[X?Y]補(bǔ)=[X]補(bǔ)(0.Y1Y2……Yn)-[X]補(bǔ)第六十八頁(yè),共一百八十二頁(yè),編輯于2023年,星期五綜合上面兩種情況,則當(dāng)被乘數(shù)X和乘數(shù)Y的符號(hào)都任意時(shí)[X?Y]補(bǔ)=[X]補(bǔ)(0.Y1Y2……Yn)-[X]補(bǔ)?Ys=[X]補(bǔ)(-Ys+0.Y1Y2……Yn)
=[X]補(bǔ)?Y第六十九頁(yè),共一百八十二頁(yè),編輯于2023年,星期五③、補(bǔ)碼乘法比較法——布斯(Booth)乘法為了得出補(bǔ)碼一位乘法算法,將上式展開(kāi)加以變換,即:[X?Y]補(bǔ)=[X]補(bǔ)[-Ys+Y12-1+Y22-2+…+Yn2-n]=[X]補(bǔ)[-Ys+(Y1-Y12-1)+(Y22-1-Y22-2)+…+(Yn2-(n-1)-Yn2-n)]第七十頁(yè),共一百八十二頁(yè),編輯于2023年,星期五=[X]補(bǔ)[(Y1-Ys)+(Y2-Y1)2-1+…+(Yn-Yn-1)2-(n-1)+(0-Yn)2-n]
=[X]補(bǔ)(Y1-Ys)+2-1([X]補(bǔ)(Y2-Y1)+2-1([X]補(bǔ)(Y3-Y2)+……+2-1([X]補(bǔ)(Yn-Yn-1)+2-1([X]補(bǔ)(Yn+1-Yn)))……))(Yn+1=0)第七十一頁(yè),共一百八十二頁(yè),編輯于2023年,星期五由上式可以發(fā)現(xiàn),每一步乘法在前次部分積的基礎(chǔ)上(開(kāi)始時(shí)部分積為0),根據(jù)Yi+1-Yi(i=n,…2,1)的值決定對(duì)[X]補(bǔ)的操作,然后右移一位,得到新的部分積。如此重復(fù)n步。第n+1步由(Y1-Ys)的值決定對(duì)[X]補(bǔ)的操作,但不用移位,即得到[X?Y]補(bǔ)。第七十二頁(yè),共一百八十二頁(yè),編輯于2023年,星期五在計(jì)算機(jī)中,由Yi+1-Yi的值決定進(jìn)行什么操作,實(shí)際上并不是做減法,而是比較Yi、Yi+1的值。這種根據(jù)相鄰兩位的比較結(jié)果決定運(yùn)算操作的方法稱為“比較法”。因?yàn)榇朔椒ㄊ怯葿ooth夫婦最早提出來(lái)的,又稱為Booth算法。Booth算法描述如下:①、參加運(yùn)算的數(shù)用補(bǔ)碼表示;第七十三頁(yè),共一百八十二頁(yè),編輯于2023年,星期五②、符號(hào)位參加運(yùn)算;③、乘數(shù)最低位后面增加一位附加位Yi+1(初值為0),以后逐次比較相鄰兩位并按表3-14所列規(guī)則運(yùn)算,算法進(jìn)行n+1步(n是不包括符號(hào)位在內(nèi)的字長(zhǎng)),但第n+1步不移位。④、移位要按補(bǔ)碼的移位規(guī)則進(jìn)行。第七十四頁(yè),共一百八十二頁(yè),編輯于2023年,星期五表3-14Booth比較法運(yùn)算規(guī)則YnYn+1操作YnYn+1操作0001部分積加0,右移一位部分積加[X]補(bǔ),右移一位011部分積加[-X]補(bǔ),右移一位部分積加0,右移一位第七十五頁(yè),共一百八十二頁(yè),編輯于2023年,星期五例:已知:X=0.0101,Y=-0.1101,求X?Y=?解:[X]補(bǔ)=0.0101,
[Y]補(bǔ)=1.0011,
[-X]補(bǔ)=1.1011第七十六頁(yè),共一百八十二頁(yè),編輯于2023年,星期五部分積乘數(shù)說(shuō)明000000+)111011100110初始狀態(tài)YnYn+1=10,部分積加[-X]補(bǔ)111011111101+)000000110011部分積和乘數(shù)右移一位YnYn+1=11,部分積加0111101111110+)000101111001部分積和乘數(shù)右移一位YnYn+1=01,部分積加[X]補(bǔ)000011000001+)000000111100部分積和乘數(shù)右移一位YnYn+1=00,部分積加0000001000000+)111011111110部分積和乘數(shù)右移一位YnYn+1=10,部分積加[-X]補(bǔ)111011111110最后不移位第七十七頁(yè),共一百八十二頁(yè),編輯于2023年,星期五[X?Y]補(bǔ)=1.10111111,X?Y=-0.01000001實(shí)現(xiàn)補(bǔ)碼一位乘法(Booth算法)的硬件原理框圖如圖3-8所示。第七十八頁(yè),共一百八十二頁(yè),編輯于2023年,星期五圖3-8實(shí)現(xiàn)補(bǔ)碼一位乘的邏輯電路框圖第七十九頁(yè),共一百八十二頁(yè),編輯于2023年,星期五乘法步驟如下:①、初始化時(shí)被乘數(shù)→B,乘數(shù)→C,并增加一位附加位,初值為0,0→A,0→CTR;②、CnCn+1=00或11時(shí),A+0→A;
CnCn+1=01時(shí),A+B→A;
CnCn+1=10時(shí),A-B→A。③、CTR+1→CTR,若CTR≠n+1,繼續(xù);若CTR=n+1,結(jié)束。第八十頁(yè),共一百八十二頁(yè),編輯于2023年,星期五④、A、C聯(lián)合右移一位,轉(zhuǎn)步驟②。⑤、最后乘積高位在A,低位在C(除去最后兩位)。此算法的優(yōu)點(diǎn)是當(dāng)遇到代碼為連續(xù)“1”或連續(xù)“0”時(shí),只需連續(xù)移位,為實(shí)現(xiàn)加速乘法創(chuàng)造了條件。缺點(diǎn)是乘數(shù)要增加一個(gè)附加位,第n+1步不移位,而且乘法結(jié)束時(shí),乘積低位在寄存器中的位置不符合要求(需丟掉最后兩位)。第八十一頁(yè),共一百八十二頁(yè),編輯于2023年,星期五(2)定點(diǎn)補(bǔ)碼兩位乘法根據(jù)補(bǔ)碼一位乘法的規(guī)則,將比較YnYn+1的狀態(tài)與比較Yn-1Yn的狀態(tài)所執(zhí)行的操作合并成一步,便很容易推導(dǎo)出補(bǔ)碼兩位乘法的算法,運(yùn)算規(guī)則如表3-15所示。第八十二頁(yè),共一百八十二頁(yè),編輯于2023年,星期五表3-15補(bǔ)碼兩位乘法運(yùn)算規(guī)則Yn-1YnYn+1操作Yn-1YnYn+1操作000部分積+0,右移兩位100部分積+2[-X]補(bǔ),右移兩位001部分積+[X]補(bǔ),右移兩位101部分積+[-X]補(bǔ),右移兩位010部分積+[X]補(bǔ),右移兩位110部分積+[-X]補(bǔ),右移兩位011部分積+2[X]補(bǔ),右移兩位111部分積+0,右移兩位第八十三頁(yè),共一百八十二頁(yè),編輯于2023年,星期五進(jìn)行定點(diǎn)補(bǔ)碼兩位乘法運(yùn)算需注意如下問(wèn)題:①、判別位。乘數(shù)的判別位涉及其附加位和符號(hào)位。在乘數(shù)的最低位后,一定要增加一位附加位,其初始值為0。定點(diǎn)補(bǔ)碼兩位乘法是從判別乘數(shù)的最低兩位與附加位的組合值開(kāi)始的。第八十四頁(yè),共一百八十二頁(yè),編輯于2023年,星期五乘數(shù)的符號(hào)位要視數(shù)值部分的位數(shù)來(lái)決定。若數(shù)值部分的位數(shù)為偶數(shù),則必須采用2位符號(hào)位;否則,就采用1位符號(hào)位。這就是說(shuō),乘數(shù)的數(shù)值部分連同符號(hào)位要保證為偶數(shù)。實(shí)際上,我們所使用的計(jì)算機(jī),一般地說(shuō),其字長(zhǎng)均為偶數(shù),因此,若乘數(shù)的位數(shù)(包括1位符號(hào)位)為計(jì)算機(jī)的字長(zhǎng),符號(hào)位取1位即可。第八十五頁(yè),共一百八十二頁(yè),編輯于2023年,星期五②、加法操作的次數(shù)。定點(diǎn)補(bǔ)碼兩位乘法運(yùn)算所做加法操作的次數(shù)為乘數(shù)的位數(shù)(包括符號(hào)位)除以2的值。③、部分積的符號(hào)位??刹捎?位符號(hào)位,以保留正確的進(jìn)位及符號(hào)位。第八十六頁(yè),共一百八十二頁(yè),編輯于2023年,星期五④、符號(hào)位擴(kuò)展。在進(jìn)行定點(diǎn)補(bǔ)碼兩位乘法運(yùn)算中,在進(jìn)行右移2位操作時(shí),要注意符號(hào)位的擴(kuò)展,即右移時(shí)符號(hào)要一起移,空出的符號(hào)位以符號(hào)的原值填充。⑤、最后一步的移位。視乘數(shù)的符號(hào)位而定。若符號(hào)位為2位,則不用移位;若符號(hào)位為1位,則要進(jìn)行右移1位的操作。第八十七頁(yè),共一百八十二頁(yè),編輯于2023年,星期五例:已知X=0.0110011,
Y=-0.0110010,求X?Y=?解:[X]補(bǔ)=000.0110011,
[Y]補(bǔ)=1.1001110,
[-X]補(bǔ)=111.10011012[X]補(bǔ)=000.1100110,
2[-X]補(bǔ)=111.0011010第八十八頁(yè),共一百八十二頁(yè),編輯于2023年,星期五部分積乘數(shù)附加位說(shuō)明0000000000+)1110011010110011100初始狀態(tài)Cn-1CnCn+1=100,+2[-X]補(bǔ)11100110101111100110+)00000000001
01100111右移兩位,Cn-1CnCn+1=111,+011111001101111111001+)00001100111
01011001右移兩位,Cn-1CnCn+1=001,+[X]補(bǔ)00001011000000001011+)11110011010
01010110右移兩位,Cn-1CnCn+1=110,+[-X]補(bǔ)111101100011111011000
00101011最后一次右移一位第八十九頁(yè),共一百八十二頁(yè),編輯于2023年,星期五所以[X?Y]補(bǔ)=1.11011000001010X?Y=-0.00100111110110第九十頁(yè),共一百八十二頁(yè),編輯于2023年,星期五3.3.4除法運(yùn)算1、原碼除法兩個(gè)原碼表示的數(shù)相除,其商的符號(hào)為相除兩數(shù)符號(hào)的異或值,數(shù)值則用兩數(shù)的絕對(duì)值相除求得。設(shè)[x]原=xs.x1x2…xn,[y]原=ys.y1y2…yn,則[q]原=(xs⊕ys)|(x1x2…xn/y1y2…yn)第九十一頁(yè),共一百八十二頁(yè),編輯于2023年,星期五定點(diǎn)機(jī)中的除法運(yùn)算對(duì)被除數(shù)和除數(shù)有一定的約束。對(duì)小數(shù)除法,要求0<|被除數(shù)|<|除數(shù)|,同時(shí)必須規(guī)定除數(shù)≠0。商的位數(shù)一般與操作數(shù)位數(shù)相等。(1)恢復(fù)余數(shù)法原碼除法也是從手工除法演變而來(lái)的。先看手工除法的計(jì)算過(guò)程。第九十二頁(yè),共一百八十二頁(yè),編輯于2023年,星期五設(shè)定x=0.1011,y=0.1101,求x/y=?第九十三頁(yè),共一百八十二頁(yè),編輯于2023年,星期五手工計(jì)算二進(jìn)制除法的規(guī)則是:①、比較被除數(shù)與除數(shù)的大小。根據(jù)前面的約定,被除數(shù)一定小于除數(shù),則上商“0”不做減法,在被除數(shù)最低位后補(bǔ)“0”得到新余數(shù),再與右移一位的除數(shù)比較;第九十四頁(yè),共一百八十二頁(yè),編輯于2023年,星期五②、如果余數(shù)大于除數(shù),則上商“1”,并執(zhí)行一次減法,得到一個(gè)新的余數(shù),將余數(shù)最低位補(bǔ)“0”,再與右移一位的除數(shù)比較;如果余數(shù)小于除數(shù),則上商“0”不做減法,將余數(shù)最低位補(bǔ)“0”,再與右移一位的除數(shù)比較。③、重復(fù)步驟②,直到余數(shù)為0或得到的商的位數(shù)滿足精度要求為止。第九十五頁(yè),共一百八十二頁(yè),編輯于2023年,星期五在計(jì)算機(jī)中實(shí)現(xiàn)除法運(yùn)算要考慮硬件電路結(jié)構(gòu)特點(diǎn),因此在計(jì)算機(jī)中除法有如下改進(jìn)做法。①、計(jì)算機(jī)直接做減法試探,根據(jù)所得余數(shù)的符號(hào)來(lái)判斷被除數(shù)(余數(shù))與除數(shù)的大小。第九十六頁(yè),共一百八十二頁(yè),編輯于2023年,星期五如果余數(shù)符號(hào)為0(差為正數(shù)),表示被除數(shù)(余數(shù))大于除數(shù)(夠減),上商“1”;如果余數(shù)符號(hào)為1(差為負(fù)數(shù)),表示被除數(shù)(余數(shù))小于除數(shù)(不夠減),上商“0”,不夠減而減了,說(shuō)明此次減法運(yùn)算是不該進(jìn)行的,必須加上除數(shù)以恢復(fù)原來(lái)的余數(shù)。第九十七頁(yè),共一百八十二頁(yè),編輯于2023年,星期五②、手工算法中,被除數(shù)(余數(shù))補(bǔ)“0”與右移一位的除數(shù)比較,計(jì)算機(jī)是用左移被除數(shù)(余數(shù))來(lái)實(shí)現(xiàn)的。第九十八頁(yè),共一百八十二頁(yè),編輯于2023年,星期五③、手工除法中,從高位向低位逐位求商。在計(jì)算機(jī)中,直接把求得的每一位商寫進(jìn)商寄存器不易實(shí)現(xiàn),通常是把求得的每一位商上到商值寄存器的最低一位。做法是:每次上商前將商值寄存器與被除數(shù)(余數(shù))寄存器聯(lián)合左移一位,空出最低一位上每次求得的商值。④、被除數(shù)(余數(shù))減除數(shù)的操作用加[-|y|]補(bǔ)實(shí)現(xiàn)。第九十九頁(yè),共一百八十二頁(yè),編輯于2023年,星期五這種因?yàn)椴粔驕p而要恢復(fù)原來(lái)余數(shù)的方法,叫做恢復(fù)余數(shù)法?;謴?fù)余數(shù)法的運(yùn)算步驟隨操作數(shù)組合的不同而改變,這使得控制線路比較復(fù)雜,而且運(yùn)算速度較慢。為此,也可用改進(jìn)后的不恢復(fù)余數(shù)法(加減交替法)來(lái)計(jì)算。第一百頁(yè),共一百八十二頁(yè),編輯于2023年,星期五(2)不恢復(fù)余數(shù)法(加減交替法)分析原碼恢復(fù)余數(shù)法得知,若第i-1次求商的余數(shù)為正ri-1時(shí),下一次求商的方法是:ri=2ri-1-|y|①、若ri≥0,上商“1”,下一步ri+1=2ri-|y|;②、若ri<0,上商“0”,恢復(fù)余數(shù)ri+|y|,下一步ri+1=2(ri+|y|)-|y|=2ri+|y|。第一百零一頁(yè),共一百八十二頁(yè),編輯于2023年,星期五此式表明,當(dāng)某一次求商出現(xiàn)不夠減時(shí)(ri<0),本次商上0,繼續(xù)求下一位商時(shí),可以不必恢復(fù)余數(shù),而是直接將負(fù)的差值左移一位后(得2ri)再加上除數(shù),其效果與恢復(fù)余數(shù)后再左移一位減除數(shù)是等效的。由此得出不恢復(fù)余數(shù)法的運(yùn)算規(guī)則為:第一百零二頁(yè),共一百八十二頁(yè),編輯于2023年,星期五當(dāng)余數(shù)為正時(shí),上商“1”,做2ri-|y|的運(yùn)算;當(dāng)余數(shù)為負(fù)時(shí),上商“0”,做2ri+|y|的運(yùn)算。這里已經(jīng)沒(méi)有恢復(fù)余數(shù)的問(wèn)題,只是將余數(shù)左移一位后加上或減去除數(shù),因此又稱為加減交替法。第一百零三頁(yè),共一百八十二頁(yè),編輯于2023年,星期五例:x=0.1011,y=-0.1101,求[x/y]原=?解:|x|=0.1011,
|y|=0.1101,
[-|y|]補(bǔ)=1.0011第一百零四頁(yè),共一百八十二頁(yè),編輯于2023年,星期五被除數(shù)(余數(shù))商說(shuō)明00.1011+)11.00110.0000初始狀態(tài)減去除數(shù)11.111011.1100+)00.11010.00000.0000余數(shù)為負(fù),商0左移一位加除數(shù)00.100101.0010+)11.00110.00010.0010余數(shù)為正,商1左移一位減去除數(shù)00.010100.1010+)11.00110.00110.0110余數(shù)為正,商1左移一位減去除數(shù)11.110111.1010+)00.11010.01100.1100余數(shù)為負(fù),商0左移一位加除數(shù)00.01110.1101余數(shù)為正,商1第一百零五頁(yè),共一百八十二頁(yè),編輯于2023年,星期五相除兩數(shù)符號(hào)位異或得到結(jié)果為1,所以:[x/y]原=1.1101
即:x/y=-0.1101由此例可見(jiàn),n位小數(shù)除法共上商n+1次,第一次上的商是整數(shù)部分,根據(jù)前面的約定,這一位一定是0。第一百零六頁(yè),共一百八十二頁(yè),編輯于2023年,星期五最后得到的余數(shù)并不就是0.0111,因?yàn)樵谟?jì)算過(guò)程中對(duì)余數(shù)進(jìn)行了四次左移操作,所以正確的余數(shù)是0.0111×2-4,并且在通常的機(jī)器中,把余數(shù)符號(hào)設(shè)為和被除數(shù)符號(hào)相同。第一百零七頁(yè),共一百八十二頁(yè),編輯于2023年,星期五2、補(bǔ)碼不恢復(fù)余數(shù)法在原碼除法中,符號(hào)位不參加運(yùn)算,操作數(shù)都取絕對(duì)值。因此,根據(jù)余數(shù)的符號(hào),即可判斷被除數(shù)(余數(shù))減除數(shù)是否“夠”減,以確定下一步的運(yùn)算。而補(bǔ)碼除法,操作數(shù)和商都要用補(bǔ)碼表示,符號(hào)位要參加運(yùn)算。第一百零八頁(yè),共一百八十二頁(yè),編輯于2023年,星期五(1)兩數(shù)符號(hào)任意時(shí)比較大小的方法當(dāng)兩數(shù)符號(hào)任意時(shí),除法運(yùn)算仍需比較兩數(shù)的絕對(duì)值大小。當(dāng)被除數(shù)或余數(shù)的絕對(duì)值大于或等于除數(shù)的絕對(duì)值時(shí),表示“夠減”;當(dāng)被除數(shù)或余數(shù)的絕對(duì)值小于除數(shù)的絕對(duì)值時(shí)表示“不夠減”。第一百零九頁(yè),共一百八十二頁(yè),編輯于2023年,星期五為了判斷“夠減”與否,當(dāng)兩數(shù)同號(hào)時(shí),應(yīng)做減法;此時(shí),若得到的余數(shù)與除數(shù)同號(hào)(也即與被除數(shù)同號(hào)),表示“夠減”,否則表示“不夠減”。當(dāng)兩數(shù)異號(hào)時(shí),應(yīng)做加法;此時(shí)若得到的余數(shù)與除數(shù)異號(hào)表示“夠減”(也即與被除數(shù)同號(hào)),否則表示“不夠減”。此算法見(jiàn)表3-16。第一百一十頁(yè),共一百八十二頁(yè),編輯于2023年,星期五表3-16比較算法表比較[x]補(bǔ)與[y]補(bǔ)的符號(hào)求余數(shù)[ri]補(bǔ)比較[r]補(bǔ)與[y]補(bǔ)的符號(hào)同號(hào)[x]補(bǔ)-[y]補(bǔ)同號(hào)表示“夠減”異號(hào)[x]補(bǔ)+[y]補(bǔ)異號(hào)表示“夠減”第一百一十一頁(yè),共一百八十二頁(yè),編輯于2023年,星期五(本來(lái)應(yīng)該比較余數(shù)符號(hào)與被除數(shù)符號(hào)是否相同來(lái)判斷是否夠減,但被除數(shù)在運(yùn)算過(guò)程中逐漸消失,所以改成了余數(shù)和除數(shù)進(jìn)行比較。)第一百一十二頁(yè),共一百八十二頁(yè),編輯于2023年,星期五(2)上商規(guī)則在補(bǔ)碼除法中,商也用補(bǔ)碼表示,因此正商和負(fù)商的上商規(guī)則不同。如果被除數(shù)與除數(shù)同號(hào),商為正(原碼形式),則夠減時(shí)商為“1”,不夠減時(shí)商為“0”。第一百一十三頁(yè),共一百八十二頁(yè),編輯于2023年,星期五如果被除數(shù)與除數(shù)異號(hào),商為負(fù)(補(bǔ)碼形式),則商為1、為0要根據(jù)具體商的情況決定(從后向前第一個(gè)1出現(xiàn)以前商上原碼,以后則商上反碼)。但商事先是不知道的,所以約定商的末位采用“恒置1”的舍入原則,則除了末位商外,其余各位商反碼,即夠減時(shí)商為“0”,不夠減時(shí)商為“1”。結(jié)合比較規(guī)則與上商規(guī)則,便可得到補(bǔ)碼除法商值的確定辦法,見(jiàn)表3-17。第一百一十四頁(yè),共一百八十二頁(yè),編輯于2023年,星期五表3-17商值的確定[x]補(bǔ)與[y]補(bǔ)商[r]補(bǔ)與[y]補(bǔ)商值同號(hào)正同號(hào)表示“夠減”1異號(hào)表示“不夠減”0異號(hào)負(fù)異號(hào)表示“夠減”0同號(hào)表示“不夠減”1第一百一十五頁(yè),共一百八十二頁(yè),編輯于2023年,星期五(3)商符的確定在補(bǔ)碼除法中,符號(hào)位參加運(yùn)算,根據(jù)前面的討論,為了比較被除數(shù)和除數(shù)的大小,第一步應(yīng)該是:當(dāng)被除數(shù)和除數(shù)同號(hào)時(shí),做[x]補(bǔ)-[y]補(bǔ)=[r]補(bǔ);當(dāng)被除數(shù)和除數(shù)異號(hào)時(shí),做[x]補(bǔ)+[y]補(bǔ)=[r]補(bǔ)。第一百一十六頁(yè),共一百八十二頁(yè),編輯于2023年,星期五因?yàn)槭嵌c(diǎn)小數(shù)除法,被除數(shù)絕對(duì)值必須小于除數(shù)的絕對(duì)值,否則商大于1而溢出。因此,當(dāng)被除數(shù)和除數(shù)同號(hào)時(shí),[r0]補(bǔ)必與[y]補(bǔ)異號(hào),按上商規(guī)則,商應(yīng)上“0”,它恰好是正商的符號(hào);當(dāng)被除數(shù)和除數(shù)異號(hào)時(shí),[r0]補(bǔ)必與[y]補(bǔ)同號(hào),按上商規(guī)則,商應(yīng)上“1”,它恰好是負(fù)商的符號(hào)。這就是說(shuō),商符是在求商值的過(guò)程中自動(dòng)形成的。第一百一十七頁(yè),共一百八十二頁(yè),編輯于2023年,星期五(4)新余數(shù)的確定當(dāng)被除數(shù)和除數(shù)同號(hào)時(shí),比較它們的大小做減法。如果所得的余數(shù)與除數(shù)同號(hào)表示“夠減”,再求新余數(shù)時(shí),將余數(shù)左移一位,繼續(xù)做減法,2[ri]補(bǔ)-[y]補(bǔ);如果所得余數(shù)與除數(shù)異號(hào),表示“不夠減”,此時(shí)不必恢復(fù)余數(shù),直接將ri左移一位做加法,2[ri]補(bǔ)+[y]補(bǔ)。第一百一十八頁(yè),共一百八十二頁(yè),編輯于2023年,星期五當(dāng)被除數(shù)和除數(shù)異號(hào)時(shí),根據(jù)前面的討論,余數(shù)與除數(shù)異號(hào)時(shí)表示“夠減”,余數(shù)與除數(shù)同號(hào)表示“不夠減”。因?yàn)閮蓴?shù)異號(hào)時(shí),求余數(shù)是做加法。因此,當(dāng)“夠減”時(shí),應(yīng)將ri左移一位繼續(xù)做加法,[ri+1]補(bǔ)=2[ri]補(bǔ)+[y]補(bǔ);當(dāng)不夠減時(shí),應(yīng)恢復(fù)余數(shù),因求新余數(shù)時(shí)做加法,則不恢復(fù)余數(shù)時(shí)應(yīng)做減法,即[ri+1]補(bǔ)=2[ri]補(bǔ)-[y]補(bǔ)。綜合上面的討論,即可得到求新余數(shù)的規(guī)則,見(jiàn)表3-18所示。第一百一十九頁(yè),共一百八十二頁(yè),編輯于2023年,星期五表3-18新余數(shù)的確定辦法[ri]補(bǔ)與[y]補(bǔ)商新余數(shù)同號(hào)1[ri+1]補(bǔ)=2[ri]補(bǔ)-[y]補(bǔ)異號(hào)0[ri+1]補(bǔ)=2[ri]補(bǔ)+[y]補(bǔ)第一百二十頁(yè),共一百八十二頁(yè),編輯于2023年,星期五由此,可以得出補(bǔ)碼加減交替法的運(yùn)算步驟:①、參加運(yùn)算的數(shù)用補(bǔ)碼表示。②、符號(hào)位參加運(yùn)算。③、被除數(shù)與除數(shù)同號(hào),做被除數(shù)減除數(shù)的運(yùn)算;被除數(shù)與除數(shù)異號(hào),做被除數(shù)加除數(shù)的運(yùn)算。第一百二十一頁(yè),共一百八十二頁(yè),編輯于2023年,星期五④、如果余數(shù)與除數(shù)同號(hào),商上“1”,[ri+1]補(bǔ)=2[ri]補(bǔ)-[y]補(bǔ);如果余數(shù)與除數(shù)異號(hào),商上“0”,[ri+1]補(bǔ)=2[ri]補(bǔ)+[y]補(bǔ)。⑤、重復(fù)步驟④n次(n是不包括符號(hào)位在內(nèi)的字長(zhǎng)),商的末位恒置1。上述方法是在末位恒置1的情況下推導(dǎo)的,這種方法操作簡(jiǎn)單,易于實(shí)現(xiàn)。此時(shí),最大的誤差為2-n。當(dāng)精度要求不高時(shí),可以采用此法。第一百二十二頁(yè),共一百八十二頁(yè),編輯于2023年,星期五例:已知x=0.1000,y=-0.1010,求x/y=?解:[x]補(bǔ)=0.1000,
[y]補(bǔ)=1.0110,
[-y]補(bǔ)=0.1010第一百二十三頁(yè),共一百八十二頁(yè),編輯于2023年,星期五被除數(shù)(余數(shù))商說(shuō)明00.1000+)11.01100.0000初始狀態(tài)[x]補(bǔ)與[y]補(bǔ)異號(hào),+[y]補(bǔ)11.111011.1100+)00.10100.00010.001[r]補(bǔ)與[y]補(bǔ)同號(hào),商“1”左移一位+[-y]補(bǔ)00.011000.1100+)11.01100.00100.010[r]補(bǔ)與[y]補(bǔ)異號(hào),商“0”左移一位+[y]補(bǔ)00.001000.0100+)11.01100.01000.100[r]補(bǔ)與[y]補(bǔ)異號(hào),商“0”左移一位+[y]補(bǔ)11.101011.0100+)00.10100.10011.001[r]補(bǔ)與[y]補(bǔ)同號(hào),商“1”左移一位11.11101.0011最低位恒置“1”第一百二十四頁(yè),共一百八十二頁(yè),編輯于2023年,星期五[x/y]補(bǔ)=1.0011,所以x/y=-0.1101,余數(shù)為-0.0010×2-4第一百二十五頁(yè),共一百八十二頁(yè),編輯于2023年,星期五3.4浮點(diǎn)數(shù)的運(yùn)算3.4.1浮點(diǎn)數(shù)的加減運(yùn)算3.4.2浮點(diǎn)數(shù)的乘除運(yùn)算第一百二十六頁(yè),共一百八十二頁(yè),編輯于2023年,星期五3.4.1浮點(diǎn)數(shù)的加減運(yùn)算設(shè)有兩個(gè)浮點(diǎn)數(shù)x和y,x=2Ex×Mx,y=2Ey×My。其中Mx和My分別為x和y的尾數(shù),Ex和Ey分別為x和y的階碼??紤]生活中十進(jìn)制數(shù)采用科學(xué)計(jì)數(shù)法表示時(shí)數(shù)據(jù)的運(yùn)算關(guān)系,兩個(gè)規(guī)格化浮點(diǎn)數(shù)進(jìn)行加減運(yùn)算需要以下步驟完成。第一百二十七頁(yè),共一百八十二頁(yè),編輯于2023年,星期五(1)對(duì)階在浮點(diǎn)數(shù)中,階碼的大小實(shí)際反映了數(shù)的小數(shù)點(diǎn)位置。因此,當(dāng)兩個(gè)浮點(diǎn)數(shù)的階碼不同時(shí),表示兩數(shù)小數(shù)點(diǎn)的位置是不同的。這樣的兩個(gè)浮點(diǎn)數(shù)則不能將它們的尾數(shù)直接相加減,必須使它們的階碼相等,小數(shù)點(diǎn)位置對(duì)齊后,才能進(jìn)行尾數(shù)的加減,這個(gè)過(guò)程稱為對(duì)階。第一百二十八頁(yè),共一百八十二頁(yè),編輯于2023年,星期五對(duì)階的第一步是求階差ΔE=Ex-Ey。若ΔE=0,則兩數(shù)的階碼相等,不需對(duì)階;若ΔE≠0,就需要對(duì)階,按階差值|ΔE|的大小來(lái)調(diào)整階碼。第一百二十九頁(yè),共一百八十二頁(yè),編輯于2023年,星期五對(duì)階時(shí),由于浮點(diǎn)數(shù)采用規(guī)格化形式,若大階向小階看齊,則必須要求對(duì)應(yīng)大階的尾數(shù)向左移位,尾數(shù)左移會(huì)引起最高有效位的丟失,造成較大誤差。因此,對(duì)階的規(guī)則是小階向大階看齊,即使階碼小的尾數(shù)向右移位,每右移一位階碼加1,直至兩數(shù)的階碼相等為止。右移的位數(shù)等于階差|ΔE|。對(duì)此過(guò)程來(lái)說(shuō),數(shù)位也有丟失,但丟失的是尾數(shù)的低位部分,誤差較小。第一百三十頁(yè),共一百八十二頁(yè),編輯于2023年,星期五(2)尾數(shù)加減對(duì)階完畢后,小數(shù)點(diǎn)的位置就對(duì)齊了。這時(shí)可以按定點(diǎn)數(shù)補(bǔ)碼加減運(yùn)算的規(guī)則求兩尾數(shù)的和或差。(3)規(guī)格化尾數(shù)加減運(yùn)算之后得到的數(shù)可能不是規(guī)格化數(shù),為了增加有效數(shù)字的位數(shù),提高運(yùn)算精度,必須進(jìn)行結(jié)果規(guī)格化操作。第一百三十一頁(yè),共一百八十二頁(yè),編輯于2023年,星期五規(guī)格化的尾數(shù)M應(yīng)滿足:1/2≤|M|<1設(shè)尾數(shù)用雙符號(hào)位補(bǔ)碼表示,經(jīng)過(guò)加減運(yùn)算之后,可能出現(xiàn)以下6種情況,即:①、00.1x……x②、11.0x……x③、00.0x……x第一百三十二頁(yè),共一百八十二頁(yè),編輯于2023年,星期五④、11.1x……x⑤、01.xx……x⑥、10.xx……x第①和②種情況,符合規(guī)格化數(shù)的定義,已是規(guī)格化數(shù)。第③和④種情況不是規(guī)格化數(shù),需要使尾數(shù)左移以實(shí)現(xiàn)規(guī)格化,這個(gè)過(guò)程稱為左規(guī)。尾數(shù)每左移一位,階碼相應(yīng)減1,直至成為規(guī)格化數(shù)為止。第一百三十三頁(yè),共一百八十二頁(yè),編輯于2023年,星期五第⑤和⑥種情況在定點(diǎn)加減運(yùn)算中稱為溢出;但在浮點(diǎn)加減運(yùn)算中,只表明此時(shí)尾數(shù)的絕對(duì)值大于1,而非真正的溢出。這種情況應(yīng)將尾數(shù)右移以實(shí)現(xiàn)規(guī)格化。這個(gè)過(guò)程稱為右規(guī)。尾數(shù)每右移一位,階碼相應(yīng)加1。第一百三十四頁(yè),共一百八十二頁(yè),編輯于2023年,星期五(4)舍入由于受到硬件的限制,在對(duì)階和右規(guī)處理之后有可能將尾數(shù)的低位丟失,這會(huì)引起一些誤差。為了減少誤差,可設(shè)置附加電路保存一些移出的數(shù)位,然后按一定的舍入方法進(jìn)行處理。舍入方法有很多種,最簡(jiǎn)單的是恒舍法,即無(wú)條件的丟掉正常尾數(shù)最低位之后的全部數(shù)值。為了提高精度,也可考慮采用0舍1入法進(jìn)行處理。第一百三十五頁(yè),共一百八十二頁(yè),編輯于2023年,星期五0舍1入法考慮右移時(shí)被丟掉數(shù)位的最高位,當(dāng)最高位為0時(shí),則舍去;如果最高位為1,則將尾數(shù)的末位加1。此法舍入誤差比較小,既適用于原碼也適用于補(bǔ)碼。但當(dāng)被丟掉的數(shù)位的最高位為1時(shí),要完成一次加法運(yùn)算,這次加法又有可能造成尾數(shù)溢出。此時(shí),須再進(jìn)行右規(guī)。第一百三十六頁(yè),共一百八十二頁(yè),編輯于2023年,星期五(5)溢出判斷與定點(diǎn)加減法一樣,浮點(diǎn)加減運(yùn)算最后一步也需要判溢出。在前面已經(jīng)指出,當(dāng)尾數(shù)之和(差)出現(xiàn)01.xx……x或10.xx……x時(shí),并不表示溢出,需要將此數(shù)右規(guī)后,再根據(jù)階碼來(lái)判斷該浮點(diǎn)運(yùn)算結(jié)果是否溢出。第一百三十七頁(yè),共一百八十二頁(yè),編輯于2023年,星期五浮點(diǎn)數(shù)的溢出情況由階碼的符號(hào)決定,若階碼也用雙符號(hào)位補(bǔ)碼表示,當(dāng):階碼為01.xx……x,表示上溢,此時(shí),浮點(diǎn)數(shù)真正溢出,機(jī)器需停止運(yùn)算,做溢出中斷處理。階碼為10.xx……x,表示下溢,浮點(diǎn)數(shù)值趨于零,機(jī)器不做溢出處理,而是按機(jī)器零處理。第一百三十八頁(yè),共一百八十二頁(yè),編輯于2023年,星期五例:設(shè)有兩浮點(diǎn)數(shù)x=0.101110×2-01,y=-(0.101011)×2-10,求x+y。(設(shè)定數(shù)據(jù)格式為:階碼4位,用移碼(偏移值為23)表示;尾數(shù)8位,用補(bǔ)碼表示,各包含一位符號(hào)位)第一百三十九頁(yè),共一百八十二頁(yè),編輯于2023年,星期五解:把x和y表示成浮點(diǎn)數(shù)格式為:[x]浮=0111;0.1011100[y]浮=0110;1.0101010(1)對(duì)階求階差:ΔE=Ex-Ey=-1-(-2)=1ΔE=1,表示Ex>Ey。按對(duì)階規(guī)則,將My右移一位,Ey+1→Ey,得:[y]浮=0111;1.10101010第一百四十頁(yè),共一百八十二頁(yè),編輯于2023年,星期五(2)尾數(shù)求和Mx+My=00.1011100+11.1010101=00.01100010(3)規(guī)格化由于結(jié)果的尾數(shù)是非規(guī)格化的數(shù),故應(yīng)左規(guī)。尾數(shù)每左移一位,階碼減1,直至尾數(shù)成為規(guī)格化數(shù)為止。最后結(jié)果為:[x+y]浮=0110;0.1100010第一百四十一頁(yè),共一百八十二頁(yè),編輯于2023年,星期五此例中不需舍入,且運(yùn)算過(guò)程中階碼沒(méi)有溢出。故:x+y=(0.110001)×2-10第一百四十二頁(yè),共一百八十二頁(yè),編輯于2023年,星期五3.4.2浮點(diǎn)數(shù)的乘除運(yùn)算1、乘法步驟兩浮點(diǎn)數(shù)相乘,其乘積的階碼應(yīng)為相乘兩數(shù)的階碼之和,其乘積的尾數(shù)應(yīng)為相乘兩數(shù)的尾數(shù)之積。即:x×y=(Mx×My)×2(Ex+Ey)第一百四十三頁(yè),共一百八十二頁(yè),編輯于2023年,星期五(1)階碼相加兩個(gè)浮點(diǎn)數(shù)的階碼相加,如果階碼用補(bǔ)碼表示,階碼相加之后無(wú)需校正;當(dāng)階碼用偏移量為2n的移碼表示時(shí),階碼相加后要減去一個(gè)偏移量2n。第一百四十四頁(yè),共一百八十二頁(yè),編輯于2023年,星期五這是因?yàn)楦鶕?jù)移碼的定義:有:[Ex]移=2n+Ex,[Ey]移=2n+Ey,
[Ex+Ey]移=2n+(Ex+Ey)而:[Ex]移+[Ey]移=2n+Ex+2n+Ey=2n+(2n+Ex+Ey)
=2n+[Ex+Ey]移所以:[Ex+Ey]移=[Ex]移+[Ey]移-2n第一百四十五頁(yè),共一百八十二頁(yè),編輯于2023年,星期五考慮到移碼的定義范圍及2n的二進(jìn)制表示,減去2n實(shí)際也即是對(duì)符號(hào)位取反。此時(shí)移碼運(yùn)算可表示為:兩數(shù)和的移碼等于求兩數(shù)移碼的和并把符號(hào)位取反。考慮補(bǔ)碼表示與移碼表示的關(guān)系,此時(shí)引入用補(bǔ)碼處理的計(jì)算公式為:[Ex+Ey]移=[Ex]移+[Ey]補(bǔ)第一百四十六頁(yè),共一百八十二頁(yè),編輯于2023年,星期五(2)尾數(shù)相乘若Mx、My都不為0,則可進(jìn)行尾數(shù)乘法。尾數(shù)乘法的算法與前述定點(diǎn)數(shù)乘法算法相同。第一百四十七頁(yè),共一百八十二頁(yè),編輯于2023年,星期五(3)尾數(shù)結(jié)果規(guī)格化由于x、y都是規(guī)格化數(shù),所以尾數(shù)相乘后的結(jié)果一定落在下列范圍內(nèi):1/4≤|Mx×My|<1當(dāng)1/2≤|Mx×My|<1時(shí),乘積已是規(guī)格化數(shù),無(wú)須再進(jìn)行規(guī)格化操作;當(dāng)1/4≤|Mx×My|<1/2時(shí),則需要左規(guī)一次。左規(guī)時(shí)調(diào)整階碼后如果發(fā)生階碼下溢,則做機(jī)器零處理。第一百四十八頁(yè),共一百八十二頁(yè),編輯于2023年,星期五2、除法步驟兩浮點(diǎn)數(shù)相除,其商的階碼應(yīng)為相除兩數(shù)的階碼之差,其商的尾數(shù)應(yīng)為相除兩數(shù)的尾數(shù)之商。即:x÷y=(Mx÷My)×2(Ex-Ey)第一百四十九頁(yè),共一百八十二頁(yè),編輯于2023年,星期五(1)尾數(shù)調(diào)整為了保證商的尾數(shù)是一個(gè)定點(diǎn)小數(shù),首先需要檢測(cè)|Mx|<|My|。如果不小于,則Mx右移一位,Ex+1→Ex,稱為尾數(shù)調(diào)整。因?yàn)閤、y都是規(guī)格化數(shù),所以最多調(diào)整一次。第一百五十頁(yè),共一百八十二頁(yè),編輯于2023年,星期五(2)階碼相減兩浮點(diǎn)數(shù)的階碼相減,如果階碼用補(bǔ)碼表示,階碼相減之后無(wú)須校正;當(dāng)階碼用偏移量為2n的移碼表示時(shí),階碼相減后要加上一個(gè)偏移量2n。階碼相減后,如有溢出,應(yīng)另作處理。第一百五十一頁(yè),共一百八十二頁(yè),編輯于2023年,星期五(3)尾數(shù)相除若Mx、My都不為0,則可進(jìn)行尾數(shù)除法。尾數(shù)除法的算法與前述定點(diǎn)數(shù)除法算法相同。因?yàn)殚_(kāi)始時(shí)已進(jìn)行了尾數(shù)調(diào)整,所以運(yùn)算結(jié)果一定落在規(guī)格化范圍內(nèi),即:1/2≤|Mx÷My|<1第一百五十二頁(yè),共一百八十二頁(yè),編輯于2023年,星期五分析上述的浮點(diǎn)四則運(yùn)算可以發(fā)現(xiàn),對(duì)于階碼只有加減運(yùn)算,對(duì)于尾數(shù)則有加、減、乘、除4種運(yùn)算??梢?jiàn)浮點(diǎn)運(yùn)算器主要由兩個(gè)定點(diǎn)運(yùn)算部件組成,一個(gè)是階碼運(yùn)算部件,用來(lái)完成階碼加、減,以及控制對(duì)階時(shí)小階的尾數(shù)右移次數(shù)和規(guī)格化時(shí)對(duì)階碼的調(diào)整;另一個(gè)是尾數(shù)運(yùn)算部件,用來(lái)完成尾數(shù)的四則運(yùn)算以及判斷尾數(shù)是否已規(guī)格化。此外,還需要有溢出判斷電路等。第一百五十三頁(yè),共一百八十二頁(yè),編輯于2023年,星期五3.5算術(shù)邏輯單元ALU3.5.1串行加法器和并行加法器3.5.2ALU的功能和結(jié)構(gòu)第一百五十四頁(yè),共一百八十二頁(yè),編輯于2023年,星期五3.5.1串行加法器和并行加法器計(jì)算機(jī)除了能實(shí)現(xiàn)各種邏輯運(yùn)算外,還要能實(shí)現(xiàn)各種算術(shù)運(yùn)算。由前面運(yùn)算方法的介紹可看到,計(jì)算機(jī)中實(shí)現(xiàn)各種算術(shù)運(yùn)算的基礎(chǔ)是加法運(yùn)算,即加、減、乘、除的基本操作都是加法,而加法功能可由加法器電路實(shí)現(xiàn)。在2.3.1節(jié)中我們已介紹了基本的半加器和全加器電路。第一百五十五頁(yè),共一百八十二頁(yè),編輯于2023年,星期五1、串行加法器計(jì)算機(jī)中的數(shù)據(jù)表示通常有多個(gè)數(shù)值位,但我們也可只用一個(gè)一位的加法器來(lái)逐位進(jìn)行計(jì)算,這樣的加法器叫串行加法器,電路結(jié)構(gòu)如圖3-9所示。第一百五十六頁(yè),共一百八十二頁(yè),編輯于2023年,星期五圖3-9一位全加器構(gòu)成的串行加法器第一百五十七頁(yè),共一百八十二頁(yè),編輯于2023年,星期五2、串行進(jìn)位的并行加法器將n個(gè)全加器順序相連可得到n位加法器,如圖3-10所示。該加法器能同時(shí)實(shí)現(xiàn)n位數(shù)據(jù)的相加操作,屬于并行加法器。第一百五十八頁(yè),共一百八十二頁(yè),編輯于2023年,星
溫馨提示
- 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年度智能化魚塘承包經(jīng)營(yíng)一體化服務(wù)合同4篇
- 2025年度農(nóng)業(yè)化肥環(huán)保技術(shù)研發(fā)與應(yīng)用合同4篇
- 二零二五年度工業(yè)廠房出租與綠色建筑運(yùn)營(yíng)合同
- 2025年度美甲店技師星級(jí)評(píng)定及獎(jiǎng)勵(lì)合同
- 2025年度個(gè)人二手房交易合同模板智能家居改造版2篇
- 2025年度南京環(huán)保項(xiàng)目污染治理工程承包合同4篇
- 2025年度美術(shù)館東館館舍租賃藝術(shù)展覽策劃與推廣合同4篇
- 二零二五年度農(nóng)業(yè)科技研發(fā)農(nóng)副業(yè)承包合同書模板4篇
- 2025年度農(nóng)家樂(lè)房屋租賃合同及可持續(xù)發(fā)展承諾協(xié)議4篇
- 2025年度門診部醫(yī)療廢物處理設(shè)施運(yùn)營(yíng)管理合同
- 藥娘激素方案
- 提高靜脈留置使用率品管圈課件
- GB/T 10739-2023紙、紙板和紙漿試樣處理和試驗(yàn)的標(biāo)準(zhǔn)大氣條件
- 《心態(tài)與思維模式》課件
- C語(yǔ)言程序設(shè)計(jì)(慕課版 第2版)PPT完整全套教學(xué)課件
- 行業(yè)會(huì)計(jì)比較(第三版)PPT完整全套教學(xué)課件
- 值機(jī)業(yè)務(wù)與行李運(yùn)輸實(shí)務(wù)(第3版)高職PPT完整全套教學(xué)課件
- 高考英語(yǔ)語(yǔ)法填空專項(xiàng)訓(xùn)練(含解析)
- 危險(xiǎn)化學(xué)品企業(yè)安全生產(chǎn)標(biāo)準(zhǔn)化課件
- 《美的歷程》導(dǎo)讀課件
- 心電圖 (史上最完美)課件
評(píng)論
0/150
提交評(píng)論