第3章(二)計算機組成原理_第1頁
第3章(二)計算機組成原理_第2頁
第3章(二)計算機組成原理_第3頁
第3章(二)計算機組成原理_第4頁
第3章(二)計算機組成原理_第5頁
已閱讀5頁,還剩180頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、3.3 定點數(shù)的運算定點數(shù)的運算3.3.1 移位運算移位運算3.3.2 補碼加減運算與溢出補碼加減運算與溢出3.3.3 乘法運算乘法運算3.3.4 除法運算除法運算3.3.1 移位運算移位運算 移位運算在計算機中有著非常重要移位運算在計算機中有著非常重要的意義。例如在計算機中沒有乘、的意義。例如在計算機中沒有乘、除法運算的實現(xiàn)時,可以用移位與除法運算的實現(xiàn)時,可以用移位與加、減法運算相結(jié)合的辦法進行處加、減法運算相結(jié)合的辦法進行處理。理。 對定點表示的數(shù)據(jù),計算機中小數(shù)點的位對定點表示的數(shù)據(jù),計算機中小數(shù)點的位置是事先約定的,因此,二進制表示的機置是事先約定的,因此,二進制表示的機器數(shù)在相對于

2、小數(shù)點作器數(shù)在相對于小數(shù)點作n位左移或右移時,位左移或右移時,其實質(zhì)就是對該數(shù)乘以或除以其實質(zhì)就是對該數(shù)乘以或除以2n。由于計。由于計算機中機器數(shù)的字長往往是固定的,當(dāng)機算機中機器數(shù)的字長往往是固定的,當(dāng)機器數(shù)左移或右移時,必然會使數(shù)據(jù)的低位器數(shù)左移或右移時,必然會使數(shù)據(jù)的低位或高位出現(xiàn)空位,對空位是進行補或高位出現(xiàn)空位,對空位是進行補0還是補還是補1與機器數(shù)表示的是有符號數(shù)還是無符號數(shù)與機器數(shù)表示的是有符號數(shù)還是無符號數(shù)有關(guān),對于有符號數(shù)的移位叫算術(shù)移位。有關(guān),對于有符號數(shù)的移位叫算術(shù)移位。 對于正數(shù),由于對于正數(shù),由于X原原=X補補=X反反=真值,真值,故移位后出現(xiàn)的空位均以故移位后出現(xiàn)的

3、空位均以0進行補充。對于進行補充。對于負(fù)數(shù),由于原碼、補碼和反碼的表示形式負(fù)數(shù),由于原碼、補碼和反碼的表示形式不同,故當(dāng)機器數(shù)移位時,對其空位的填不同,故當(dāng)機器數(shù)移位時,對其空位的填充規(guī)則也不同。表充規(guī)則也不同。表3-12列出了三種不同碼列出了三種不同碼制的機器數(shù)移位后的添補規(guī)則。必須注意制的機器數(shù)移位后的添補規(guī)則。必須注意的是:不論是正數(shù)還是負(fù)數(shù),移位后其符的是:不論是正數(shù)還是負(fù)數(shù),移位后其符號位均不變,這是算術(shù)移位的重要特點。號位均不變,這是算術(shù)移位的重要特點。表表3-12 不同編碼機器數(shù)移位后的添補規(guī)則不同編碼機器數(shù)移位后的添補規(guī)則碼制碼制添補代碼添補代碼正數(shù)正數(shù)原碼、補碼、反碼原碼、補

4、碼、反碼0負(fù)負(fù)數(shù)數(shù)原碼原碼0補補碼碼左移添左移添0右移添右移添1反碼反碼1 由上表可得出如下結(jié)論:由上表可得出如下結(jié)論:(1)機器數(shù)為正時,不論左移或右移,添)機器數(shù)為正時,不論左移或右移,添補代碼都為補代碼都為0。(2)由于負(fù)數(shù)的原碼其數(shù)值部分與真值相)由于負(fù)數(shù)的原碼其數(shù)值部分與真值相同,故在移位時不論左移或右移,只要使同,故在移位時不論左移或右移,只要使符號位不變,其空位均補符號位不變,其空位均補0。(3)由于負(fù)數(shù)的反碼其數(shù)值位表示與真值)由于負(fù)數(shù)的反碼其數(shù)值位表示與真值正好相反,故移位后添補的均為正好相反,故移位后添補的均為1(此時(此時仍需保持符號位不變),即相當(dāng)于對真值仍需保持符號位

5、不變),即相當(dāng)于對真值補補0。(4)分析任意負(fù)數(shù)的補碼可發(fā)現(xiàn)當(dāng)對其由低)分析任意負(fù)數(shù)的補碼可發(fā)現(xiàn)當(dāng)對其由低位向高位找到第一個位向高位找到第一個“1”時,在此時,在此“1”左左邊的各位均與對應(yīng)的反碼相同,而在此邊的各位均與對應(yīng)的反碼相同,而在此“1”右邊的各位均與對應(yīng)的原碼相同。故負(fù)數(shù)右邊的各位均與對應(yīng)的原碼相同。故負(fù)數(shù)的補碼左移時,空位出現(xiàn)在低位,添補的的補碼左移時,空位出現(xiàn)在低位,添補的代碼與原碼相同,即為代碼與原碼相同,即為0;右移時,空位出;右移時,空位出現(xiàn)在高位,添補的代碼與反碼相同,即為現(xiàn)在高位,添補的代碼與反碼相同,即為1。 例:設(shè)機器數(shù)字長為例:設(shè)機器數(shù)字長為8位(含一位符號位(

6、含一位符號位),若位),若X=27,寫出,寫出X對應(yīng)的原碼、對應(yīng)的原碼、反碼和補碼的形式,并求出三種機器數(shù)反碼和補碼的形式,并求出三種機器數(shù)左、右移一位后的表示形式及對應(yīng)的真左、右移一位后的表示形式及對應(yīng)的真值。值。 有符號數(shù)的移位稱為算術(shù)移位,無符號有符號數(shù)的移位稱為算術(shù)移位,無符號數(shù)的移位稱為邏輯移位。邏輯移位的規(guī)數(shù)的移位稱為邏輯移位。邏輯移位的規(guī)則是:邏輯左移時,高位移出,低位空則是:邏輯左移時,高位移出,低位空位補位補0;邏輯右移時,低位移出,高位空;邏輯右移時,低位移出,高位空位補位補0。3.3.2 補碼加減運算與溢出補碼加減運算與溢出 加減法運算是計算機中最基本的算術(shù)運加減法運算是

7、計算機中最基本的算術(shù)運算,一般計算機中都采用補碼表示來進算,一般計算機中都采用補碼表示來進行實現(xiàn)。行實現(xiàn)。1、補碼加減運算的基本公式補碼加減運算的基本公式 補碼加法的基本公式為:補碼加法的基本公式為:X+Y補補=X補補+Y補補 按照補碼的定義,此公式可進行嚴(yán)格的按照補碼的定義,此公式可進行嚴(yán)格的數(shù)學(xué)證明,以小數(shù)為例證明如下:數(shù)學(xué)證明,以小數(shù)為例證明如下: 證明:真值證明:真值X、Y的符號共有四種情況。的符號共有四種情況。(1)X0,Y0,則,則X+Y0 根據(jù)補碼定義可得:根據(jù)補碼定義可得:X補補+Y補補=X+Y=X+Y補補 (Mod 2)(2)X0,Y0根據(jù)補碼定義:根據(jù)補碼定義:X補補=X,

8、Y補補=2+Y,則,則X補補+Y補補=2+(X+Y)當(dāng)當(dāng)|X|Y|時,時,0X+Y1(正數(shù)),模(正數(shù)),模2時,時,2+(X+Y)=X+Y所以所以X補補+Y補補=2+(X+Y) =X+Y=X+Y補補 (Mod 2)當(dāng)當(dāng)|X|Y|時,時,-1X+Y0(負(fù)數(shù)),(負(fù)數(shù)),X補補+Y補補=2+(X+Y)=X+Y補補(3)X0(可仿照(可仿照(2)證明)證明)(4)X0,Y0,則,則X+Y0根據(jù)補碼定義:根據(jù)補碼定義:X補補=2+X,Y補補=2+Y,則,則X補補+Y補補=2+X+2+Y=2+(2+X+Y)因為(因為(X+Y)0,而且其絕對值又小于,而且其絕對值又小于2,則則0(2+X+Y)2;在模在

9、模2情況下,情況下,2+(2+X+Y)=2+X+Y =2+(X+Y)=X+Y補補所以:所以:X補補+Y補補=X+Y補補由以上各種情況的證明,可得到結(jié)論:由以上各種情況的證明,可得到結(jié)論:X補補+Y補補=X+Y補補 由補碼加法的基本公式,可得到補碼減法由補碼加法的基本公式,可得到補碼減法的基本公式:的基本公式:X-Y補補=X補補+-Y補補 即:即:X-Y補補=X+(-Y)補補= X補補+-Y補補。 根據(jù)以上加減運算的基本公式,可得到根據(jù)以上加減運算的基本公式,可得到補碼運算的規(guī)則如下:補碼運算的規(guī)則如下:、參加運算的操作數(shù)均用補碼表示。、參加運算的操作數(shù)均用補碼表示。、符號位參與運算。、符號位參

10、與運算。、對于兩數(shù)相加減的各種情況,計算機、對于兩數(shù)相加減的各種情況,計算機都執(zhí)行求和操作。都執(zhí)行求和操作。、運算結(jié)果仍為補碼表示。、運算結(jié)果仍為補碼表示。 在補碼機器中,對于參與運算的在補碼機器中,對于參與運算的X和和Y兩兩個數(shù),都以補碼形式表示在機器中,即個數(shù),都以補碼形式表示在機器中,即機器內(nèi)存放的是機器內(nèi)存放的是X補補和和Y補補的形式,所的形式,所以對于加法運算來說,比較簡單,而對以對于加法運算來說,比較簡單,而對于減法運算,需要考慮怎樣從于減法運算,需要考慮怎樣從Y補補變換變換到到-Y補補的形式,然后參加運算。的形式,然后參加運算。 不論不論Y的真值是正是負(fù),已知的真值是正是負(fù),已知

11、Y補補求求-Y補補的方法都是將的方法都是將Y補補的符號位連同數(shù)值位的符號位連同數(shù)值位一起求反后末位加一起求反后末位加1,這是因為,這是因為Y和和-Y肯肯定為一正一負(fù),且絕對值相同。定為一正一負(fù),且絕對值相同。 例:已知:例:已知: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=?2、溢出及其判別方法、溢出及其判別方法 計算機的加法器和寄存器都有固定的位計算機的加法器和寄

12、存器都有固定的位數(shù),當(dāng)選定了數(shù)據(jù)表示格式后,所能表數(shù),當(dāng)選定了數(shù)據(jù)表示格式后,所能表示的數(shù)據(jù)范圍也就相應(yīng)確定了。當(dāng)運算示的數(shù)據(jù)范圍也就相應(yīng)確定了。當(dāng)運算結(jié)果超出機器數(shù)所能表示的范圍時,稱結(jié)果超出機器數(shù)所能表示的范圍時,稱為溢出。為溢出。 例如:字長例如:字長4位,采用補碼表示,則表數(shù)位,采用補碼表示,則表數(shù)范圍為范圍為-8+7。如果。如果x=+6,y=+3,則:,則: x補補+y補補=0 110+0 011 =1 001=x+y補補 可得可得x+y=-7,而正確結(jié)果應(yīng)該是,而正確結(jié)果應(yīng)該是+9。這。這是因為只有一個符號位,使得結(jié)果符號錯是因為只有一個符號位,使得結(jié)果符號錯亂。在這種情況下,符號

13、位是數(shù)值,如果亂。在這種情況下,符號位是數(shù)值,如果當(dāng)作符號,留下的結(jié)果將是不正確的。當(dāng)作符號,留下的結(jié)果將是不正確的。 兩個異號數(shù)相加不會產(chǎn)生溢出,只有兩兩個異號數(shù)相加不會產(chǎn)生溢出,只有兩同號數(shù)相加才有可能產(chǎn)生溢出。兩個同同號數(shù)相加才有可能產(chǎn)生溢出。兩個同號數(shù)相減也不會出現(xiàn)溢出,只有兩個異號數(shù)相減也不會出現(xiàn)溢出,只有兩個異號數(shù)相減才會出現(xiàn)溢出。當(dāng)兩個數(shù)據(jù)運號數(shù)相減才會出現(xiàn)溢出。當(dāng)兩個數(shù)據(jù)運算的結(jié)果大于機器所能表示的最大正數(shù)算的結(jié)果大于機器所能表示的最大正數(shù)時稱為正溢。運算結(jié)果小于機器所能表時稱為正溢。運算結(jié)果小于機器所能表示的最小負(fù)數(shù)時稱為負(fù)溢。示的最小負(fù)數(shù)時稱為負(fù)溢。 需要說明的是,溢出是指

14、運算結(jié)果超出需要說明的是,溢出是指運算結(jié)果超出表數(shù)范圍,它既不是最高數(shù)值位向符號表數(shù)范圍,它既不是最高數(shù)值位向符號位的進位,也不是符號位本身產(chǎn)生的進位的進位,也不是符號位本身產(chǎn)生的進位。下面通過幾個例子加以說明。位。下面通過幾個例子加以說明。 當(dāng)最高數(shù)值位向符號位產(chǎn)生進位時,可當(dāng)最高數(shù)值位向符號位產(chǎn)生進位時,可能產(chǎn)生溢出(能產(chǎn)生溢出(c),也可能不產(chǎn)生溢出),也可能不產(chǎn)生溢出(a)和()和(b);符號位本身產(chǎn)生的進位);符號位本身產(chǎn)生的進位也是如此。只有在最高數(shù)值位向符號位也是如此。只有在最高數(shù)值位向符號位有進位而符號位本身不產(chǎn)生進位(有進位而符號位本身不產(chǎn)生進位(c),),或者最高數(shù)值位不向

15、符號位產(chǎn)生進位而或者最高數(shù)值位不向符號位產(chǎn)生進位而符號位本身卻產(chǎn)生進位(符號位本身卻產(chǎn)生進位(d)時,才發(fā))時,才發(fā)生溢出。這可作為判斷溢出的條件。生溢出。這可作為判斷溢出的條件。 補碼定點加減法運算中,常用的判斷溢補碼定點加減法運算中,常用的判斷溢出的方法有兩種:出的方法有兩種:(1)采用變形補碼判斷溢出)采用變形補碼判斷溢出 變形補碼是采用變形補碼是采用2位符號位的補碼,即位符號位的補碼,即用用“00”表示正號,用表示正號,用“11”表示負(fù)號。表示負(fù)號。它是以它是以4為模的(對小數(shù)來說),其定為模的(對小數(shù)來說),其定義為:義為:XX補補= =X 0X 0X1 X1 4+X -14+X -

16、1X0 X0 (mod 4mod 4) 在采用變形補碼進行加法運算時,兩位在采用變形補碼進行加法運算時,兩位符號位與數(shù)值位同時參與運算,而且高符號位與數(shù)值位同時參與運算,而且高位產(chǎn)生的進位自動丟失(執(zhí)行了模位產(chǎn)生的進位自動丟失(執(zhí)行了模4操操作),則可以得到正確的結(jié)果。作),則可以得到正確的結(jié)果。 X+Y補補=X補補+Y補補 利用變形補碼進行溢出判斷的原則是:利用變形補碼進行溢出判斷的原則是:如果結(jié)果的兩位符號位不相同,則表示如果結(jié)果的兩位符號位不相同,則表示溢出,否則沒有溢出(此時等同異或運溢出,否則沒有溢出(此時等同異或運算)。不論在何種情況下,最高位即第算)。不論在何種情況下,最高位即第

17、一位符號位為真正的符號。一位符號位為真正的符號。 例如:例如:x補補=00 1010 y補補=00 1001 則則x+y補補=01 0011 x補補=11 0001 y補補=11 0111 則則x+y補補=10 1000 此兩例都為溢出的情況。此兩例都為溢出的情況。 例如:例如:x補補=00 0101 y補補=00 0111 則則x+y補補=00 1100 x補補=11 1011 y補補=11 0111 則則x+y補補=11 0010 此兩例都為不溢出的情況。此兩例都為不溢出的情況。 在采用變形補碼進行加減運算時,運算在采用變形補碼進行加減運算時,運算結(jié)果的兩位符號應(yīng)該相同。如果兩個符結(jié)果的兩

18、位符號應(yīng)該相同。如果兩個符號位同時為號位同時為0,則表示結(jié)果為正數(shù);如,則表示結(jié)果為正數(shù);如果同時為果同時為1,則表示結(jié)果為負(fù)數(shù)。如果,則表示結(jié)果為負(fù)數(shù)。如果兩個符號位不同,則表示產(chǎn)生了溢出,兩個符號位不同,則表示產(chǎn)生了溢出,且左邊的符號位表示結(jié)果的正確符號,且左邊的符號位表示結(jié)果的正確符號,所以如果運算結(jié)果的兩位符號位為所以如果運算結(jié)果的兩位符號位為“01”,則表示產(chǎn)生了正溢出;如果運,則表示產(chǎn)生了正溢出;如果運算結(jié)果的符號位為算結(jié)果的符號位為“10”,則表示產(chǎn)生,則表示產(chǎn)生了負(fù)溢出。了負(fù)溢出。 需要說明的是,在使用雙符號位時,寄需要說明的是,在使用雙符號位時,寄存器內(nèi)的操作數(shù)其實只需保存一

19、個符號存器內(nèi)的操作數(shù)其實只需保存一個符號位就可以了,因為對于任何正確的數(shù)據(jù),位就可以了,因為對于任何正確的數(shù)據(jù),它的兩個符號位的值都是相同的。但是它的兩個符號位的值都是相同的。但是在加法器中又要有雙符號位,所以在相在加法器中又要有雙符號位,所以在相加時,寄存器中的一位符號位的值要同加時,寄存器中的一位符號位的值要同時輸入到加法器中的兩個符號位中。時輸入到加法器中的兩個符號位中。(2)利用符號位的進位信息判斷溢出)利用符號位的進位信息判斷溢出 由于減法運算在計算機中也是利用加法由于減法運算在計算機中也是利用加法實現(xiàn)的,所以符號不同的數(shù)在進行減法實現(xiàn)的,所以符號不同的數(shù)在進行減法時,減數(shù)的相反數(shù)在

20、求補后的符號與被時,減數(shù)的相反數(shù)在求補后的符號與被減數(shù)的符號應(yīng)該是一致的。因此,不論減數(shù)的符號應(yīng)該是一致的。因此,不論作加法還是減法,只要參加運算的兩個作加法還是減法,只要參加運算的兩個操作數(shù)的符號相同,而運算結(jié)果與參加操作數(shù)的符號相同,而運算結(jié)果與參加運算的原操作數(shù)的符號不同,就可以判運算的原操作數(shù)的符號不同,就可以判定為溢出。定為溢出。 例如:例如:x補補=1 1011 y補補=1 0011 x+y補補=0 1110 由于操作數(shù)的符號都為由于操作數(shù)的符號都為1,但結(jié)果的符,但結(jié)果的符號位為號位為0,所以判定為溢出。,所以判定為溢出。 又如:又如:x補補=1 1010 y補補=1 0111

21、x+y補補=1 0001 由于結(jié)果的符號位與原操作數(shù)的符號位由于結(jié)果的符號位與原操作數(shù)的符號位相同,所以判定為無溢出。相同,所以判定為無溢出。 采用一位符號位進行判斷是否溢出時,采用一位符號位進行判斷是否溢出時,為了節(jié)省時間,通常也可以使用符號位為了節(jié)省時間,通常也可以使用符號位產(chǎn)生的進位和數(shù)值最高有效位產(chǎn)生的進產(chǎn)生的進位和數(shù)值最高有效位產(chǎn)生的進位進行異或操作。如果異或的結(jié)果為位進行異或操作。如果異或的結(jié)果為1則表示有溢出;異或結(jié)果為則表示有溢出;異或結(jié)果為0則表示沒則表示沒有溢出。有溢出。3、補碼加減運算的電路、補碼加減運算的電路圖圖3-6 實現(xiàn)補碼加減運算的邏輯電路實現(xiàn)補碼加減運算的邏輯電

22、路 在該圖中,被加數(shù)(或被減數(shù))在該圖中,被加數(shù)(或被減數(shù))X和加數(shù)和加數(shù)(或減數(shù))(或減數(shù))Y分別存放在分別存放在A寄存器和寄存器和B寄寄存器中,當(dāng)執(zhí)行加法運算時,執(zhí)行存器中,當(dāng)執(zhí)行加法運算時,執(zhí)行X補補+Y補補,將,將X補補和和Y補補從從A寄存器和寄存器和B寄寄存器送到加法器的兩個輸入端。當(dāng)執(zhí)行存器送到加法器的兩個輸入端。當(dāng)執(zhí)行減法運算時,執(zhí)行減法運算時,執(zhí)行X補補+-Y補補,將運算,將運算結(jié)果保存在結(jié)果保存在A寄存器中。寄存器中。 在邏輯電路中,在邏輯電路中,ALU由多個全加器及其由多個全加器及其他電路組成。每個全加器有三個輸入端,他電路組成。每個全加器有三個輸入端,其中一個接收從低位來

23、的進位信號,而其中一個接收從低位來的進位信號,而最低位沒有進位信號輸入,因此可利用最低位沒有進位信號輸入,因此可利用來作為來作為“+1”信號。信號。 當(dāng)執(zhí)行加法時,提供控制信號有:當(dāng)執(zhí)行加法時,提供控制信號有:AALU,BALU,M=0(經(jīng)異或門控制(經(jīng)異或門控制BALU,同時最低位加,同時最低位加0),),ALUA。 當(dāng)執(zhí)行減法時,提供控制信號有:當(dāng)執(zhí)行減法時,提供控制信號有:AALU,BALU,M=1(經(jīng)異或門控制(經(jīng)異或門控制B#ALU,同時最低位加,同時最低位加1),),ALUA。 其中其中ALU+1操作可以和加法操作同時進操作可以和加法操作同時進行,所以總共只需要一次加法運算。行,所

24、以總共只需要一次加法運算。3.3.3 乘法運算乘法運算 在計算機中,乘法運算是一種很重要的在計算機中,乘法運算是一種很重要的運算,有的機器由硬件乘法器(見附錄運算,有的機器由硬件乘法器(見附錄1)直接完成乘法運算,有的機器內(nèi)沒有乘直接完成乘法運算,有的機器內(nèi)沒有乘法器,但可以按機器作乘法運算的方法,法器,但可以按機器作乘法運算的方法,用軟件編程實現(xiàn)。下面分別討論原碼和用軟件編程實現(xiàn)。下面分別討論原碼和補碼的乘法運算方法。補碼的乘法運算方法。 1、原碼乘法、原碼乘法(1)定點原碼一位乘法)定點原碼一位乘法 考慮十進制數(shù)的乘法規(guī)則及原碼表示方考慮十進制數(shù)的乘法規(guī)則及原碼表示方法的特點,可得到原碼乘

25、法的規(guī)則如下:法的特點,可得到原碼乘法的規(guī)則如下:兩個原碼數(shù)相乘,其乘積的符號為相乘兩個原碼數(shù)相乘,其乘積的符號為相乘兩數(shù)符號的異或值,數(shù)值則為兩數(shù)絕對兩數(shù)符號的異或值,數(shù)值則為兩數(shù)絕對值之積。值之積。 假設(shè):假設(shè):X原原=X0X1X2Xn Y原原=Y0Y1Y2Yn則:則:XY原原=X原原Y原原 =(X0 Y0)|(X1X2Xn)(Y1Y2Yn) 符號符號“|”表示把符號位和數(shù)值位拼接起表示把符號位和數(shù)值位拼接起來。來。 先來看手工乘法的運算過程。先來看手工乘法的運算過程。 設(shè)設(shè)X=0.1101 Y=0.1011,計算乘積,計算乘積XY。 0 . 1 1 0 1 0 . 1 1 0 1 0 .

26、 1 0 1 1 0 . 1 0 1 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 0 0 0 0 0 0 0 0 1 1 0 1 1 1 0 1 0 . 1 0 0 0 1 1 1 1 0 . 1 0 0 0 1 1 1 1 即即XY=0.10001111,相乘兩數(shù)同號,相乘兩數(shù)同號,結(jié)果符號為正。結(jié)果符號為正。 在手工計算時,逐次按乘數(shù)每位的取值是在手工計算時,逐次按乘數(shù)每位的取值是1還是還是0,決定相加數(shù)取被乘數(shù)的值還是,決定相加數(shù)取被乘數(shù)的值還是取零值,而且相加數(shù)逐次向左偏移取零值,而且相加數(shù)逐次向左偏移1位,位,最后一起相加求積。若計算機完全模擬筆最后一起相加求

27、積。若計算機完全模擬筆算乘法步驟,將會有困難:第一,機器難算乘法步驟,將會有困難:第一,機器難以實現(xiàn)四個位積的一次相加;第二,乘積以實現(xiàn)四個位積的一次相加;第二,乘積位數(shù)增長了一倍。位數(shù)增長了一倍。 為此,在計算機中的運算方法作了如下為此,在計算機中的運算方法作了如下改進:改進:、計算機一次加法操作只能求出兩數(shù)之、計算機一次加法操作只能求出兩數(shù)之和,因此每求得一個相加數(shù),就與上次和,因此每求得一個相加數(shù),就與上次部分積相加。部分積相加。、在求本次部分積時,前一次部分積的、在求本次部分積時,前一次部分積的最低位不再參與運算,因此可將其右移最低位不再參與運算,因此可將其右移一位,相加數(shù)可直送而不必

28、偏移,于是一位,相加數(shù)可直送而不必偏移,于是用用N位加法器就可以實現(xiàn)兩個位加法器就可以實現(xiàn)兩個N位數(shù)相乘。位數(shù)相乘。、部分積右移時,乘數(shù)寄存器同時右移、部分積右移時,乘數(shù)寄存器同時右移一位,這樣可以一直用乘數(shù)寄存器的最一位,這樣可以一直用乘數(shù)寄存器的最低位來控制相加數(shù)(取被乘數(shù)或零),低位來控制相加數(shù)(取被乘數(shù)或零),同時乘數(shù)寄存器的最高位可接收部分積同時乘數(shù)寄存器的最高位可接收部分積右移出來的一位,因此,完成乘法運算右移出來的一位,因此,完成乘法運算后,乘積分開放在了兩個寄存器中。后,乘積分開放在了兩個寄存器中。 如圖如圖3-7是計算機內(nèi)實現(xiàn)原碼乘法的邏是計算機內(nèi)實現(xiàn)原碼乘法的邏輯框圖,其中

29、輯框圖,其中A、B、C三個寄存器分別三個寄存器分別存放部分積、被乘數(shù)和乘數(shù)。存放部分積、被乘數(shù)和乘數(shù)。圖圖3-7 實現(xiàn)原碼一位乘的邏輯電路框圖實現(xiàn)原碼一位乘的邏輯電路框圖 乘法開始時,乘法開始時,A寄存器被清為零,作為初寄存器被清為零,作為初始部分積。被乘數(shù)放在始部分積。被乘數(shù)放在B寄存器中,乘數(shù)寄存器中,乘數(shù)放在放在C寄存器中。實現(xiàn)部分積和被乘數(shù)相寄存器中。實現(xiàn)部分積和被乘數(shù)相加是通過給出加是通過給出AALU和和BALU命令,命令,在在ALU中完成的。中完成的。ALU的輸出經(jīng)過移位的輸出經(jīng)過移位電路向右移一位送入電路向右移一位送入A寄存器中。寄存器中。C寄存寄存器是用移位寄存器實現(xiàn)的,其最低

30、位用器是用移位寄存器實現(xiàn)的,其最低位用作作BALU的控制命令。的控制命令。 加法器最低一位的值右移時將移入加法器最低一位的值右移時將移入C寄存寄存器的最高數(shù)值位,使相乘之積的低位部器的最高數(shù)值位,使相乘之積的低位部分保存進分保存進C寄存器中,原來的乘數(shù)在逐次寄存器中,原來的乘數(shù)在逐次右移過程中丟失了。右移過程中丟失了。 圖中還給出了一個計數(shù)器,用來控制逐圖中還給出了一個計數(shù)器,用來控制逐次相乘的次數(shù)。它的初始值放乘數(shù)位數(shù),次相乘的次數(shù)。它的初始值放乘數(shù)位數(shù),計算結(jié)束時給出結(jié)束乘運算的控制信號。計算結(jié)束時給出結(jié)束乘運算的控制信號。 由于在運算過程中,被乘數(shù)寄存器的值由于在運算過程中,被乘數(shù)寄存器

31、的值保持不變,而部分積寄存器和乘數(shù)寄存保持不變,而部分積寄存器和乘數(shù)寄存器的值一直變化,可以用這兩個寄存器器的值一直變化,可以用這兩個寄存器值的變化過程描述這種計算方法。值的變化過程描述這種計算方法。 例:設(shè)例:設(shè)X=0.1101,Y=0.1011,求,求XY=? 解:解:X原原=0 1101 Y原原=0 1011,用,用數(shù)值位計算,部分積取雙符號位,實際數(shù)值位計算,部分積取雙符號位,實際用來保存加運算時的進位信息。用來保存加運算時的進位信息。部分積部分積 乘乘數(shù)數(shù)說明說明 00 0000 + 00 11011011初始條件,部分初始條件,部分積為積為0乘數(shù)低位為乘數(shù)低位為1,加被乘數(shù)加被乘數(shù)

32、 00 1101 00 0110 + 00 110110111101右移右移1位,形成位,形成新的部分積,新的部分積,乘數(shù)右移,低位乘數(shù)右移,低位為為1,加被乘,加被乘數(shù)數(shù) 01 0011 00 1001 + 00 000011011110右移右移1位,形成位,形成新的部分積,新的部分積,乘數(shù)也右移,低乘數(shù)也右移,低位為位為0,加,加0 判定符號,因為判定符號,因為X0 Y0=0 0=0,所以,所以得到:得到: XY原原=0 10001111 即:即:XY=+0.10001111(2)定點原碼兩位乘法)定點原碼兩位乘法 原碼兩位乘即從乘數(shù)的最低位開始每次原碼兩位乘即從乘數(shù)的最低位開始每次取兩位

33、乘數(shù)與被乘數(shù)相乘得到一次部分取兩位乘數(shù)與被乘數(shù)相乘得到一次部分積,它與原碼一位乘一樣,符號位的運積,它與原碼一位乘一樣,符號位的運算和數(shù)值部分是分開進行的,但由于每算和數(shù)值部分是分開進行的,但由于每次是用兩位乘數(shù)的狀態(tài)來決定新的部分次是用兩位乘數(shù)的狀態(tài)來決定新的部分積如何形成,因此運算步驟減少,提高積如何形成,因此運算步驟減少,提高了運算速度。了運算速度。 兩位乘數(shù)共有四種可能組合,每種組兩位乘數(shù)共有四種可能組合,每種組合對應(yīng)于以下操作:合對應(yīng)于以下操作:00相當(dāng)于相當(dāng)于0X。部分積。部分積Pi右移兩位,右移兩位,不進行其他運算。不進行其他運算。01相當(dāng)于相當(dāng)于1X。部分積。部分積Pi+X,右

34、,右移兩位。移兩位。10相當(dāng)于相當(dāng)于2X。部分積。部分積Pi+2X,右,右移兩位。移兩位。11相當(dāng)于相當(dāng)于3X。部分積。部分積Pi+3X,右,右移兩位。移兩位。 與前面的一位乘法相比,多出了與前面的一位乘法相比,多出了+2X和和+3X兩種情況。把兩種情況。把X左移一位可得左移一位可得2X,在機器上可采用向左斜送在機器上可采用向左斜送1位來實現(xiàn)。可位來實現(xiàn)??墒鞘?3X一般不能一次完成,如分成兩次一般不能一次完成,如分成兩次進行,又降低了計算速度。解決問題的進行,又降低了計算速度。解決問題的辦法是:以(辦法是:以(4X-X)來代替)來代替3X運算,運算,在本次運算中只執(zhí)行在本次運算中只執(zhí)行-X,

35、而,而+4X歸并到歸并到下一步執(zhí)行。下一步執(zhí)行。 此時部分積已右移了兩位,上一步欠此時部分積已右移了兩位,上一步欠下的下的+4X已變成已變成+X。推導(dǎo)過程如下:。推導(dǎo)過程如下:設(shè)之前得到的部分積為設(shè)之前得到的部分積為Pi,右移兩位,右移兩位相當(dāng)于乘相當(dāng)于乘2-2。正常運算為加。正常運算為加3X右移右移兩位,即(兩位,即(Pi+4X-X)2-2;此式子;此式子等于(等于(Pi-X)2-2+X,此時表示操作,此時表示操作步驟為步驟為Pi減減X后右移兩位再加后右移兩位再加X。 在實際線路中用一個觸發(fā)器在實際線路中用一個觸發(fā)器C來記錄是否來記錄是否欠下欠下+4X,若是,則,若是,則1C,控制在下一,控

36、制在下一步補上所欠數(shù)據(jù)。因此實際操作用步補上所欠數(shù)據(jù)。因此實際操作用Yi-1、Yi、C三位來控制,運算規(guī)則可如表三位來控制,運算規(guī)則可如表3-13所示。所示。表表3-13 原碼兩位乘法規(guī)則原碼兩位乘法規(guī)則Yi-1i-1 Yi i C操操 作作0 0 00 0 10 1 00 1 11 0 01 0 11 1 01 1 1(Pi i+0)2-2-2(Pi i+X)2-2-2(Pi i+X)2-2-2(Pi i+2X)2-2-2(Pi i+2X)2-2-2(Pi i- -X)2-2-2(Pi i- -X)2-2-2(Pi i+0)2-2-20C0C0C0C0C1C1C1C 例:已知例:已知X=-0

37、.100111,Y=0.101110,求求XY=? 解:解:X原原=1.100111,Y原原=0.101110, |X|=0.100111,|X|補補=0.100111, -|X|補補=1.011001部分積部分積乘數(shù)乘數(shù) 欠位欠位說明說明 000 000000 +)001 00111000101110 0初始狀態(tài)初始狀態(tài)100,部分積,部分積+2X 0C 001 001110 000 010011 +)111 01100110001011 0右移兩位右移兩位110,部分積,部分積- -|X| 1C 111 101100 111 111011 +)111 01100100100010 1右移兩

38、位右移兩位101,部分積,部分積- -|X| 1C 111 010100 111 110101 +)000 10011100001000 1右移兩位右移兩位001,部分積,部分積+X 000 01110000001000 1不移位,得到結(jié)果不移位,得到結(jié)果 判定符號,因為判定符號,因為X0 Y0=1 0=1,所,所以得到:以得到:XY原原=1 011100000010 即即XY=-0.011100000010 對于原碼兩位乘,需注意:對于原碼兩位乘,需注意:、部分積和被乘數(shù)采用三個符號位。、部分積和被乘數(shù)采用三個符號位。因為在原碼兩位乘法中,有加因為在原碼兩位乘法中,有加2X的操的操作,因此絕

39、對值有可能大于作,因此絕對值有可能大于2。此時仍。此時仍需保留進位,以最高位的符號位作為需保留進位,以最高位的符號位作為處理過程中的符號。處理過程中的符號。 、減、減|X|的操作是通過加的操作是通過加-|X|補補來實現(xiàn)來實現(xiàn)的。這是因為原碼的減法實現(xiàn)麻煩,需考的。這是因為原碼的減法實現(xiàn)麻煩,需考慮絕對值大小,并判斷結(jié)果符號,不如先慮絕對值大小,并判斷結(jié)果符號,不如先當(dāng)成補碼處理,因此,右移時按補碼的移當(dāng)成補碼處理,因此,右移時按補碼的移位規(guī)則進行處理。(減位規(guī)則進行處理。(減X時當(dāng)成補碼處理,時當(dāng)成補碼處理,有可能結(jié)果為負(fù),但每次的減都意味著下有可能結(jié)果為負(fù),但每次的減都意味著下一步會補上所欠

40、的一步會補上所欠的4X,當(dāng)補上后結(jié)果肯,當(dāng)補上后結(jié)果肯定為正值,此時正數(shù)的補碼、原碼、絕對定為正值,此時正數(shù)的補碼、原碼、絕對值都是一樣的。)值都是一樣的。)、當(dāng)乘數(shù)為偶數(shù)個數(shù)值位時,乘數(shù)的符、當(dāng)乘數(shù)為偶數(shù)個數(shù)值位時,乘數(shù)的符號位設(shè)置兩位號位設(shè)置兩位“00”,以便最后一步能處,以便最后一步能處理前面可能留下的欠帳,但不用移位。理前面可能留下的欠帳,但不用移位。當(dāng)乘數(shù)為奇數(shù)個數(shù)值位時,乘數(shù)符號位當(dāng)乘數(shù)為奇數(shù)個數(shù)值位時,乘數(shù)符號位可設(shè)置一位可設(shè)置一位“0”,此時最后一次移一位。,此時最后一次移一位。2、補碼乘法、補碼乘法(1)定點補碼一位乘法)定點補碼一位乘法 原碼乘法存在兩個明顯的缺點:一是符號

41、原碼乘法存在兩個明顯的缺點:一是符號位需要單獨運算,最后給運算結(jié)果賦以正位需要單獨運算,最后給運算結(jié)果賦以正確符號,這給運算帶來麻煩;二是對于采確符號,這給運算帶來麻煩;二是對于采用補碼存儲的機器,從存儲器或寄存器中用補碼存儲的機器,從存儲器或寄存器中取出的是操作數(shù)的補碼,需先將其轉(zhuǎn)換成取出的是操作數(shù)的補碼,需先將其轉(zhuǎn)換成原碼,然后才能進行乘法運算,再對結(jié)果原碼,然后才能進行乘法運算,再對結(jié)果轉(zhuǎn)換成補碼保存。很不方便。轉(zhuǎn)換成補碼保存。很不方便。、補碼與真值之間的關(guān)系、補碼與真值之間的關(guān)系 設(shè)設(shè)X補補=Xs.X1X2Xn當(dāng)當(dāng)X0時,時,Xs=0,X補補=0.X1X2Xn=X當(dāng)當(dāng)X0,根據(jù)上面的討

42、論,則:,根據(jù)上面的討論,則: X(0.Y1Y2Yn)補補 =X補補(0.Y1Y2Yn) 得到:得到: XY補補=X補補(0.Y1Y2Yn)-X補補 綜合上面兩種情況,則當(dāng)被乘數(shù)綜合上面兩種情況,則當(dāng)被乘數(shù)X和乘數(shù)和乘數(shù)Y的符號都任意時的符號都任意時XY補補=X補補(0.Y1Y2Yn)-X補補Ys =X補補(-Ys+0.Y1Y2Yn) =X補補Y、補碼乘法比較法、補碼乘法比較法布斯(布斯(Booth)乘法乘法 為了得出補碼一位乘法算法,將上式為了得出補碼一位乘法算法,將上式展開加以變換,即:展開加以變換,即:XY補補=X補補-Ys+ Y12-1+ Y22-2+ Yn2-n =X補補-Ys+(Y

43、1- Y12-1)+(Y22-1- Y22-2)+(Yn2-(n-1)- Yn2-n) =X補補(Y1- Ys)+(Y2- Y1)2-1+(Yn- Yn-1)2-(n-1)+(0- Yn)2-n =X補補(Y1- Ys)+2-1(X補補(Y2-Y1)+2-1(X補補(Y3-Y2)+2-1(X補補(Yn-Yn-1)+2-1(X補補(Yn+1-Yn)()(Yn+1=0) 由上式可以發(fā)現(xiàn),每一步乘法在前次部分由上式可以發(fā)現(xiàn),每一步乘法在前次部分積的基礎(chǔ)上(開始時部分積為積的基礎(chǔ)上(開始時部分積為0),根據(jù)),根據(jù)Yi+1-Yi(i=n,2,1)的值決定對)的值決定對X補補的操作,然后右移一位,得到新

44、的部分積。的操作,然后右移一位,得到新的部分積。如此重復(fù)如此重復(fù)n步。第步。第n+1步由(步由(Y1-Ys)的值)的值決定對決定對X補補的操作,但不用移位,即得到的操作,但不用移位,即得到XY補補。 在計算機中,由在計算機中,由Yi+1-Yi的值決定進行什的值決定進行什么操作,實際上并不是做減法,而是比么操作,實際上并不是做減法,而是比較較Yi、Yi+1的值。這種根據(jù)相鄰兩位的比的值。這種根據(jù)相鄰兩位的比較結(jié)果決定運算操作的方法稱為較結(jié)果決定運算操作的方法稱為“比較比較法法”。因為此方法是由。因為此方法是由Booth夫婦最早提夫婦最早提出來的,又稱為出來的,又稱為Booth算法。算法。 Boo

45、th算法描述如下:算法描述如下:、參加運算的數(shù)用補碼表示;、參加運算的數(shù)用補碼表示;、符號位參加運算;、符號位參加運算;、乘數(shù)最低位后面增加一位附加位、乘數(shù)最低位后面增加一位附加位Yi+1(初值為(初值為0),以后逐次比較相鄰兩位并),以后逐次比較相鄰兩位并按表按表3-14所列規(guī)則運算,算法進行所列規(guī)則運算,算法進行n+1步(步(n是不包括符號位在內(nèi)的字長),但是不包括符號位在內(nèi)的字長),但第第n+1步不移位。步不移位。、移位要按補碼的移位規(guī)則進行。、移位要按補碼的移位規(guī)則進行。表表3-14 Booth比較法運算規(guī)則比較法運算規(guī)則Yn nYn+1n+1操操 作作Yn nYn+1n+1操操 作作

46、0 00 1部分積加部分積加0,右移一位右移一位部分積加部分積加X補補,右,右移一位移一位01 1部分積加部分積加- -X補補,右移,右移一位一位部分積加部分積加0,右移一位右移一位 例:已知:例:已知:X=0.0101,Y=-0.1101, 求求XY=? 解:解:X補補=0.0101, Y補補=1.0011, -X補補=1.1011部分積部分積乘數(shù)乘數(shù)說明說明 00 0000 +)11 101110011 0初始狀態(tài)初始狀態(tài)Yn nYn+1n+1=10,部分積加,部分積加-X補補 11 1011 11 1101 +)00 000011001 1部分積和乘數(shù)右移一位部分積和乘數(shù)右移一位Yn n

47、Yn+1n+1=11,部分積加,部分積加0 11 1101 11 1110 +)00 010111100 1部分積和乘數(shù)右移一位部分積和乘數(shù)右移一位Yn nYn+1n+1=01,部分積加,部分積加X補補 00 0011 00 0001 +)00 000011110 0部分積和乘數(shù)右移一位部分積和乘數(shù)右移一位Yn nYn+1n+1=00,部分積加,部分積加0 00 0001 00 0000 +)11 101111111 0部分積和乘數(shù)右移一位部分積和乘數(shù)右移一位Yn nYn+1n+1=10,部分積加,部分積加-X補補 11 101111111 0最后不移位最后不移位 XY補補=1.1011111

48、1, XY=-0.01000001 實現(xiàn)補碼一位乘法(實現(xiàn)補碼一位乘法(Booth算法)的硬件算法)的硬件原理框圖如圖原理框圖如圖3-8所示。所示。圖圖3-8 實現(xiàn)補碼一位乘的邏輯電路框圖實現(xiàn)補碼一位乘的邏輯電路框圖 乘法步驟如下:乘法步驟如下:、初始化時被乘數(shù)、初始化時被乘數(shù)B,乘數(shù),乘數(shù)C,并增,并增加一位附加位,初值為加一位附加位,初值為0,0A,0CTR;、CnCn+1=00或或11時,時,A+0A; CnCn+1=01時,時,A+BA; CnCn+1=10時,時,A-BA。、CTR+1CTR,若,若CTRn+1,繼續(xù);,繼續(xù);若若CTR=n+1,結(jié)束。,結(jié)束。、A、C聯(lián)合右移一位,轉(zhuǎn)

49、步驟聯(lián)合右移一位,轉(zhuǎn)步驟。、最后乘積高位在、最后乘積高位在A,低位在,低位在C(除去最(除去最后兩位)。后兩位)。 此算法的優(yōu)點是當(dāng)遇到代碼為連續(xù)此算法的優(yōu)點是當(dāng)遇到代碼為連續(xù)“1”或或連續(xù)連續(xù)“0”時,只需連續(xù)移位,為實現(xiàn)加速時,只需連續(xù)移位,為實現(xiàn)加速乘法創(chuàng)造了條件。缺點是乘數(shù)要增加一個乘法創(chuàng)造了條件。缺點是乘數(shù)要增加一個附加位,第附加位,第n+1步不移位,而且乘法結(jié)束步不移位,而且乘法結(jié)束時,乘積低位在寄存器中的位置不符合要時,乘積低位在寄存器中的位置不符合要求(需丟掉最后兩位)。求(需丟掉最后兩位)。(2)定點補碼兩位乘法)定點補碼兩位乘法 根據(jù)補碼一位乘法的規(guī)則,將比較根據(jù)補碼一位乘

50、法的規(guī)則,將比較YnYn+1的狀態(tài)與比較的狀態(tài)與比較Yn-1Yn的狀態(tài)所執(zhí)的狀態(tài)所執(zhí)行的操作合并成一步,便很容易推導(dǎo)行的操作合并成一步,便很容易推導(dǎo)出補碼兩位乘法的算法,運算規(guī)則如出補碼兩位乘法的算法,運算規(guī)則如表表3-15所示。所示。表表3-15 補碼兩位乘法運算規(guī)則補碼兩位乘法運算規(guī)則Yn-1n-1Yn nYn+1n+1操操 作作Yn-1n-1Yn nYn+1n+1操操 作作000部分積部分積+0,右移,右移兩位兩位100部分積部分積+2- -X補補,右移兩位右移兩位001部分積部分積+X補補,右移兩位右移兩位101部分積部分積+- -X補補,右移兩位右移兩位010部分積部分積+X補補,右

51、移兩位右移兩位110部分積部分積+- -X補補,右移兩位右移兩位011部分積部分積+2X補補,右移兩位右移兩位111部分積部分積+0,右移,右移兩位兩位 進行定點補碼兩位乘法運算需注意如下問進行定點補碼兩位乘法運算需注意如下問題:題:、判別位。乘數(shù)的判別位涉及其附加位、判別位。乘數(shù)的判別位涉及其附加位和符號位。在乘數(shù)的最低位后,一定要增和符號位。在乘數(shù)的最低位后,一定要增加一位附加位,其初始值為加一位附加位,其初始值為0。定點補碼。定點補碼兩位乘法是從判別乘數(shù)的最低兩位與附加兩位乘法是從判別乘數(shù)的最低兩位與附加位的組合值開始的。位的組合值開始的。 乘數(shù)的符號位要視數(shù)值部分的位數(shù)來決乘數(shù)的符號位

52、要視數(shù)值部分的位數(shù)來決定。若數(shù)值部分的位數(shù)為偶數(shù),則必須定。若數(shù)值部分的位數(shù)為偶數(shù),則必須采用采用2位符號位;否則,就采用位符號位;否則,就采用1位符號位符號位。這就是說,乘數(shù)的數(shù)值部分連同符位。這就是說,乘數(shù)的數(shù)值部分連同符號位要保證為偶數(shù)。實際上,我們所使號位要保證為偶數(shù)。實際上,我們所使用的計算機,一般地說,其字長均為偶用的計算機,一般地說,其字長均為偶數(shù),因此,若乘數(shù)的位數(shù)(包括數(shù),因此,若乘數(shù)的位數(shù)(包括1位符號位符號位)為計算機的字長,符號位取位)為計算機的字長,符號位取1位即可。位即可。、加法操作的次數(shù)。定點補碼兩位乘法、加法操作的次數(shù)。定點補碼兩位乘法運算所做加法操作的次數(shù)為乘

53、數(shù)的位數(shù)運算所做加法操作的次數(shù)為乘數(shù)的位數(shù)(包括符號位)除以(包括符號位)除以2的值。的值。、部分積的符號位??刹捎?、部分積的符號位??刹捎?位符號位,位符號位,以保留正確的進位及符號位。以保留正確的進位及符號位。、符號位擴展。在進行定點補碼兩位乘、符號位擴展。在進行定點補碼兩位乘法運算中,在進行右移法運算中,在進行右移2位操作時,要注位操作時,要注意符號位的擴展,即右移時符號要一起意符號位的擴展,即右移時符號要一起移,空出的符號位以符號的原值填充。移,空出的符號位以符號的原值填充。、最后一步的移位。視乘數(shù)的符號位而、最后一步的移位。視乘數(shù)的符號位而定。若符號位為定。若符號位為2位,則不用移位

54、;若符位,則不用移位;若符號位為號位為1位,則要進行右移位,則要進行右移1位的操作。位的操作。 例:已知例:已知X=0.0110011, Y=-0.0110010,求,求XY=? 解:解:X補補=000.0110011, Y補補=1.1001110, -X補補=111.1001101 2X補補=000.1100110, 2-X補補=111.0011010部分積部分積乘數(shù)乘數(shù) 附加位附加位說明說明 000 0000000+)111 00110101 1001110 0初始狀態(tài)初始狀態(tài)Cn-1CnCn+1=100,+2- -X補補 111 0011010 111 1100110+)000 0000

55、0001 0110011 1右移兩位,右移兩位,Cn-1CnCn+1=111,+0 111 1100110 111 1111001+)000 01100111 0101100 1右移兩位,右移兩位,Cn-1CnCn+1=001,+X補補 000 0101100 000 0001011+)111 10011010 0101011 0右移兩位,右移兩位,Cn-1CnCn+1=110,+- -X補補 111 1011000 111 11011000 0010101 1最后一次右移一位最后一次右移一位 所以所以XY補補=1.1101100 0001010 XY=-0.0010011 11101103.

56、3.4 除法運算除法運算1、原碼除法、原碼除法 兩個原碼表示的數(shù)相除,其商的符號為相除兩個原碼表示的數(shù)相除,其商的符號為相除兩數(shù)符號的異或值,數(shù)值則用兩數(shù)的絕對值兩數(shù)符號的異或值,數(shù)值則用兩數(shù)的絕對值相除求得。相除求得。設(shè)設(shè)x原原=xs.x1x2xn,y原原=ys.y1y2yn,則則q原原=(xs ys)|(x1x2xn / y1y2yn) 定點機中的除法運算對被除數(shù)和除數(shù)有一定點機中的除法運算對被除數(shù)和除數(shù)有一定的約束。對小數(shù)除法,要求定的約束。對小數(shù)除法,要求0|被除數(shù)被除數(shù)|除數(shù)除數(shù)|,同時必須規(guī)定除數(shù),同時必須規(guī)定除數(shù)0。商的位。商的位數(shù)一般與操作數(shù)位數(shù)相等。數(shù)一般與操作數(shù)位數(shù)相等。(

57、1)恢復(fù)余數(shù)法)恢復(fù)余數(shù)法 原碼除法也是從手工除法演變而來的。先原碼除法也是從手工除法演變而來的。先看手工除法的計算過程??词止こǖ挠嬎氵^程。 設(shè)定設(shè)定 x=0.1011,y=0.1101,求,求x/y=? 手工計算二進制除法的規(guī)則是:手工計算二進制除法的規(guī)則是:、比較被除數(shù)與除數(shù)的大小。根據(jù)前面的、比較被除數(shù)與除數(shù)的大小。根據(jù)前面的約定,被除數(shù)一定小于除數(shù),則上商約定,被除數(shù)一定小于除數(shù),則上商“0”不做減法,在被除數(shù)最低位后補不做減法,在被除數(shù)最低位后補“0”得到得到新余數(shù),再與右移一位的除數(shù)比較;新余數(shù),再與右移一位的除數(shù)比較;、如果余數(shù)大于除數(shù),則上商、如果余數(shù)大于除數(shù),則上商“1”

58、,并,并執(zhí)行一次減法,得到一個新的余數(shù),將執(zhí)行一次減法,得到一個新的余數(shù),將余數(shù)最低位補余數(shù)最低位補“0”,再與右移一位的除,再與右移一位的除數(shù)比較;如果余數(shù)小于除數(shù),則上商數(shù)比較;如果余數(shù)小于除數(shù),則上商“0”不做減法,將余數(shù)最低位補不做減法,將余數(shù)最低位補“0”,再與,再與右移一位的除數(shù)比較。右移一位的除數(shù)比較。、重復(fù)步驟、重復(fù)步驟,直到余數(shù)為,直到余數(shù)為0或得到的或得到的商的位數(shù)滿足精度要求為止。商的位數(shù)滿足精度要求為止。 在計算機中實現(xiàn)除法運算要考慮硬件電在計算機中實現(xiàn)除法運算要考慮硬件電路結(jié)構(gòu)特點,因此在計算機中除法有如路結(jié)構(gòu)特點,因此在計算機中除法有如下改進做法。下改進做法。、計算

59、機直接做減法試探,根據(jù)所得余、計算機直接做減法試探,根據(jù)所得余數(shù)的符號來判斷被除數(shù)(余數(shù))與除數(shù)數(shù)的符號來判斷被除數(shù)(余數(shù))與除數(shù)的大小。的大小。 如果余數(shù)符號為如果余數(shù)符號為0(差為正數(shù)),表示(差為正數(shù)),表示被除數(shù)(余數(shù))大于除數(shù)(夠減),上被除數(shù)(余數(shù))大于除數(shù)(夠減),上商商“1”;如果余數(shù)符號為;如果余數(shù)符號為1(差為負(fù)(差為負(fù)數(shù)),表示被除數(shù)(余數(shù))小于除數(shù)數(shù)),表示被除數(shù)(余數(shù))小于除數(shù)(不夠減),上商(不夠減),上商“0”,不夠減而減了,不夠減而減了,說明此次減法運算是不該進行的,必須說明此次減法運算是不該進行的,必須加上除數(shù)以恢復(fù)原來的余數(shù)。加上除數(shù)以恢復(fù)原來的余數(shù)。、手工

60、算法中,被除數(shù)(余數(shù))補、手工算法中,被除數(shù)(余數(shù))補“0”與右移一位的除數(shù)比較,計算機是用左與右移一位的除數(shù)比較,計算機是用左移被除數(shù)(余數(shù))來實現(xiàn)的。移被除數(shù)(余數(shù))來實現(xiàn)的。、手工除法中,從高位向低位逐位求商。、手工除法中,從高位向低位逐位求商。在計算機中,直接把求得的每一位商寫在計算機中,直接把求得的每一位商寫進商寄存器不易實現(xiàn),通常是把求得的進商寄存器不易實現(xiàn),通常是把求得的每一位商上到商值寄存器的最低一位。每一位商上到商值寄存器的最低一位。做法是:每次上商前將商值寄存器與被做法是:每次上商前將商值寄存器與被除數(shù)(余數(shù))寄存器聯(lián)合左移一位,空除數(shù)(余數(shù))寄存器聯(lián)合左移一位,空出最低一

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論