![二計算機組成原理_第1頁](http://file4.renrendoc.com/view/9c5a2745d0c5dce701377b31c220daaf/9c5a2745d0c5dce701377b31c220daaf1.gif)
![二計算機組成原理_第2頁](http://file4.renrendoc.com/view/9c5a2745d0c5dce701377b31c220daaf/9c5a2745d0c5dce701377b31c220daaf2.gif)
![二計算機組成原理_第3頁](http://file4.renrendoc.com/view/9c5a2745d0c5dce701377b31c220daaf/9c5a2745d0c5dce701377b31c220daaf3.gif)
![二計算機組成原理_第4頁](http://file4.renrendoc.com/view/9c5a2745d0c5dce701377b31c220daaf/9c5a2745d0c5dce701377b31c220daaf4.gif)
![二計算機組成原理_第5頁](http://file4.renrendoc.com/view/9c5a2745d0c5dce701377b31c220daaf/9c5a2745d0c5dce701377b31c220daaf5.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
二計算機組成原理第一頁,共一百八十二頁,編輯于2023年,星期五3.3定點數(shù)的運算3.3.1移位運算3.3.2補碼加減運算與溢出3.3.3乘法運算3.3.4除法運算第二頁,共一百八十二頁,編輯于2023年,星期五3.3.1移位運算移位運算在計算機中有著非常重要的意義。例如在計算機中沒有乘、除法運算的實現(xiàn)時,可以用移位與加、減法運算相結合的辦法進行處理。第三頁,共一百八十二頁,編輯于2023年,星期五對定點表示的數(shù)據(jù),計算機中小數(shù)點的位置是事先約定的,因此,二進制表示的機器數(shù)在相對于小數(shù)點作n位左移或右移時,其實質就是對該數(shù)乘以或除以2n。由于計算機中機器數(shù)的字長往往是固定的,當機器數(shù)左移或右移時,必然會使數(shù)據(jù)的低位或高位出現(xiàn)空位,對空位是進行補0還是補1與機器數(shù)表示的是有符號數(shù)還是無符號數(shù)有關,對于有符號數(shù)的移位叫算術移位。第四頁,共一百八十二頁,編輯于2023年,星期五對于正數(shù),由于[X]原=[X]補=[X]反=真值,故移位后出現(xiàn)的空位均以0進行補充。對于負數(shù),由于原碼、補碼和反碼的表示形式不同,故當機器數(shù)移位時,對其空位的填充規(guī)則也不同。表3-12列出了三種不同碼制的機器數(shù)移位后的添補規(guī)則。必須注意的是:不論是正數(shù)還是負數(shù),移位后其符號位均不變,這是算術移位的重要特點。第五頁,共一百八十二頁,編輯于2023年,星期五表3-12不同編碼機器數(shù)移位后的添補規(guī)則碼制添補代碼正數(shù)原碼、補碼、反碼0負數(shù)原碼0補碼左移添0右移添1反碼1第六頁,共一百八十二頁,編輯于2023年,星期五由上表可得出如下結論:(1)機器數(shù)為正時,不論左移或右移,添補代碼都為0。(2)由于負數(shù)的原碼其數(shù)值部分與真值相同,故在移位時不論左移或右移,只要使符號位不變,其空位均補0。第七頁,共一百八十二頁,編輯于2023年,星期五(3)由于負數(shù)的反碼其數(shù)值位表示與真值正好相反,故移位后添補的均為1(此時仍需保持符號位不變),即相當于對真值補0。第八頁,共一百八十二頁,編輯于2023年,星期五(4)分析任意負數(shù)的補碼可發(fā)現(xiàn)當對其由低位向高位找到第一個“1”時,在此“1”左邊的各位均與對應的反碼相同,而在此“1”右邊的各位均與對應的原碼相同。故負數(shù)的補碼左移時,空位出現(xiàn)在低位,添補的代碼與原碼相同,即為0;右移時,空位出現(xiàn)在高位,添補的代碼與反碼相同,即為1。第九頁,共一百八十二頁,編輯于2023年,星期五例:設機器數(shù)字長為8位(含一位符號位),若X=±27,寫出X對應的原碼、反碼和補碼的形式,并求出三種機器數(shù)左、右移一位后的表示形式及對應的真值。有符號數(shù)的移位稱為算術移位,無符號數(shù)的移位稱為邏輯移位。邏輯移位的規(guī)則是:邏輯左移時,高位移出,低位空位補0;邏輯右移時,低位移出,高位空位補0。第十頁,共一百八十二頁,編輯于2023年,星期五3.3.2補碼加減運算與溢出加減法運算是計算機中最基本的算術運算,一般計算機中都采用補碼表示來進行實現(xiàn)。1、補碼加減運算的基本公式補碼加法的基本公式為:[X+Y]補=[X]補+[Y]補第十一頁,共一百八十二頁,編輯于2023年,星期五按照補碼的定義,此公式可進行嚴格的數(shù)學證明,以小數(shù)為例證明如下:證明:真值X、Y的符號共有四種情況。(1)X>0,Y>0,則X+Y>0根據(jù)補碼定義可得:[X]補+[Y]補=X+Y=[X+Y]補(Mod2)第十二頁,共一百八十二頁,編輯于2023年,星期五(2)X>0,Y<0根據(jù)補碼定義:[X]補=X,[Y]補=2+Y,則[X]補+[Y]補=2+(X+Y)①當|X|≥|Y|時,0≤X+Y<1(正數(shù)),模2時,2+(X+Y)=X+Y所以[X]補+[Y]補=2+(X+Y)
=X+Y=[X+Y]補(Mod2)②當|X|<|Y|時,-1≤X+Y<0(負數(shù)),[X]補+[Y]補=2+(X+Y)=[X+Y]補第十三頁,共一百八十二頁,編輯于2023年,星期五(3)X<0,Y>0(可仿照(2)證明)(4)X<0,Y<0,則X+Y<0根據(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;在模2情況下,2+(2+X+Y)=2+X+Y=2+(X+Y)=[X+Y]補所以:[X]補+[Y]補=[X+Y]補第十四頁,共一百八十二頁,編輯于2023年,星期五由以上各種情況的證明,可得到結論:[X]補+[Y]補=[X+Y]補由補碼加法的基本公式,可得到補碼減法的基本公式:[X-Y]補=[X]補+[-Y]補即:[X-Y]補=[X+(-Y)]補=[X]補+[-Y]補。第十五頁,共一百八十二頁,編輯于2023年,星期五根據(jù)以上加減運算的基本公式,可得到補碼運算的規(guī)則如下:①、參加運算的操作數(shù)均用補碼表示。②、符號位參與運算。③、對于兩數(shù)相加減的各種情況,計算機都執(zhí)行求和操作。④、運算結果仍為補碼表示。第十六頁,共一百八十二頁,編輯于2023年,星期五在補碼機器中,對于參與運算的X和Y兩個數(shù),都以補碼形式表示在機器中,即機器內存放的是[X]補和[Y]補的形式,所以對于加法運算來說,比較簡單,而對于減法運算,需要考慮怎樣從[Y]補變換到[-Y]補的形式,然后參加運算。第十七頁,共一百八十二頁,編輯于2023年,星期五不論Y的真值是正是負,已知[Y]補求[-Y]補的方法都是將[Y]補的符號位連同數(shù)值位一起求反后末位加1,這是因為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=?第十九頁,共一百八十二頁,編輯于2023年,星期五2、溢出及其判別方法計算機的加法器和寄存器都有固定的位數(shù),當選定了數(shù)據(jù)表示格式后,所能表示的數(shù)據(jù)范圍也就相應確定了。當運算結果超出機器數(shù)所能表示的范圍時,稱為溢出。第二十頁,共一百八十二頁,編輯于2023年,星期五例如:字長4位,采用補碼表示,則表數(shù)范圍為-8~+7。如果x=+6,y=+3,則:
[x]補+[y]補=0110+0011=1001=[x+y]補可得x+y=-7,而正確結果應該是+9。這是因為只有一個符號位,使得結果符號錯亂。在這種情況下,符號位是數(shù)值,如果當作符號,留下的結果將是不正確的。第二十一頁,共一百八十二頁,編輯于2023年,星期五兩個異號數(shù)相加不會產生溢出,只有兩同號數(shù)相加才有可能產生溢出。兩個同號數(shù)相減也不會出現(xiàn)溢出,只有兩個異號數(shù)相減才會出現(xiàn)溢出。當兩個數(shù)據(jù)運算的結果大于機器所能表示的最大正數(shù)時稱為正溢。運算結果小于機器所能表示的最小負數(shù)時稱為負溢。第二十二頁,共一百八十二頁,編輯于2023年,星期五需要說明的是,溢出是指運算結果超出表數(shù)范圍,它既不是最高數(shù)值位向符號位的進位,也不是符號位本身產生的進位。下面通過幾個例子加以說明。第二十三頁,共一百八十二頁,編輯于2023年,星期五當最高數(shù)值位向符號位產生進位時,可能產生溢出(c),也可能不產生溢出(a)和(b);符號位本身產生的進位也是如此。只有在最高數(shù)值位向符號位有進位而符號位本身不產生進位(c),或者最高數(shù)值位不向符號位產生進位而符號位本身卻產生進位(d)時,才發(fā)生溢出。這可作為判斷溢出的條件。第二十四頁,共一百八十二頁,編輯于2023年,星期五補碼定點加減法運算中,常用的判斷溢出的方法有兩種:(1)采用變形補碼判斷溢出變形補碼是采用2位符號位的補碼,即用“00”表示正號,用“11”表示負號。它是以4為模的(對小數(shù)來說),其定義為:[X]補=X0≤X<14+X-1≤X<0(mod4)第二十五頁,共一百八十二頁,編輯于2023年,星期五在采用變形補碼進行加法運算時,兩位符號位與數(shù)值位同時參與運算,而且高位產生的進位自動丟失(執(zhí)行了模4操作),則可以得到正確的結果。
[X+Y]補=[X]補+[Y]補第二十六頁,共一百八十二頁,編輯于2023年,星期五利用變形補碼進行溢出判斷的原則是:如果結果的兩位符號位不相同,則表示溢出,否則沒有溢出(此時等同異或運算)。不論在何種情況下,最高位即第一位符號位為真正的符號。第二十七頁,共一百八十二頁,編輯于2023年,星期五例如:[x]補=001010[y]補=001001
則[x+y]補=010011[x]補=110001[y]補=110111
則[x+y]補=101000
此兩例都為溢出的情況。第二十八頁,共一百八十二頁,編輯于2023年,星期五例如:[x]補=000101[y]補=000111
則[x+y]補=001100[x]補=111011[y]補=110111
則[x+y]補=110010
此兩例都為不溢出的情況。第二十九頁,共一百八十二頁,編輯于2023年,星期五在采用變形補碼進行加減運算時,運算結果的兩位符號應該相同。如果兩個符號位同時為0,則表示結果為正數(shù);如果同時為1,則表示結果為負數(shù)。如果兩個符號位不同,則表示產生了溢出,且左邊的符號位表示結果的正確符號,所以如果運算結果的兩位符號位為“01”,則表示產生了正溢出;如果運算結果的符號位為“10”,則表示產生了負溢出。第三十頁,共一百八十二頁,編輯于2023年,星期五需要說明的是,在使用雙符號位時,寄存器內的操作數(shù)其實只需保存一個符號位就可以了,因為對于任何正確的數(shù)據(jù),它的兩個符號位的值都是相同的。但是在加法器中又要有雙符號位,所以在相加時,寄存器中的一位符號位的值要同時輸入到加法器中的兩個符號位中。第三十一頁,共一百八十二頁,編輯于2023年,星期五(2)利用符號位的進位信息判斷溢出由于減法運算在計算機中也是利用加法實現(xiàn)的,所以符號不同的數(shù)在進行減法時,減數(shù)的相反數(shù)在求補后的符號與被減數(shù)的符號應該是一致的。因此,不論作加法還是減法,只要參加運算的兩個操作數(shù)的符號相同,而運算結果與參加運算的原操作數(shù)的符號不同,就可以判定為溢出。第三十二頁,共一百八十二頁,編輯于2023年,星期五例如:[x]補=11011[y]補=10011[x+y]補=01110由于操作數(shù)的符號都為1,但結果的符號位為0,所以判定為溢出。又如:[x]補=11010[y]補=10111[x+y]補=10001由于結果的符號位與原操作數(shù)的符號位相同,所以判定為無溢出。第三十三頁,共一百八十二頁,編輯于2023年,星期五采用一位符號位進行判斷是否溢出時,為了節(jié)省時間,通常也可以使用符號位產生的進位和數(shù)值最高有效位產生的進位進行異或操作。如果異或的結果為1則表示有溢出;異或結果為0則表示沒有溢出。第三十四頁,共一百八十二頁,編輯于2023年,星期五3、補碼加減運算的電路圖3-6實現(xiàn)補碼加減運算的邏輯電路第三十五頁,共一百八十二頁,編輯于2023年,星期五在該圖中,被加數(shù)(或被減數(shù))X和加數(shù)(或減數(shù))Y分別存放在A寄存器和B寄存器中,當執(zhí)行加法運算時,執(zhí)行[X]補+[Y]補,將[X]補和[Y]補從A寄存器和B寄存器送到加法器的兩個輸入端。當執(zhí)行減法運算時,執(zhí)行[X]補+[-Y]補,將運算結果保存在A寄存器中。第三十六頁,共一百八十二頁,編輯于2023年,星期五在邏輯電路中,ALU由多個全加器及其他電路組成。每個全加器有三個輸入端,其中一個接收從低位來的進位信號,而最低位沒有進位信號輸入,因此可利用來作為“+1”信號。第三十七頁,共一百八十二頁,編輯于2023年,星期五當執(zhí)行加法時,提供控制信號有:A→ALU,B→ALU,M=0(經(jīng)異或門控制B→ALU,同時最低位加0),ALU→A。當執(zhí)行減法時,提供控制信號有:A→ALU,B→ALU,M=1(經(jīng)異或門控制B#→ALU,同時最低位加1),ALU→A。其中ALU+1操作可以和加法操作同時進行,所以總共只需要一次加法運算。第三十八頁,共一百八十二頁,編輯于2023年,星期五3.3.3乘法運算
在計算機中,乘法運算是一種很重要的運算,有的機器由硬件乘法器(見附錄1)直接完成乘法運算,有的機器內沒有乘法器,但可以按機器作乘法運算的方法,用軟件編程實現(xiàn)。下面分別討論原碼和補碼的乘法運算方法。第三十九頁,共一百八十二頁,編輯于2023年,星期五1、原碼乘法(1)定點原碼一位乘法考慮十進制數(shù)的乘法規(guī)則及原碼表示方法的特點,可得到原碼乘法的規(guī)則如下:兩個原碼數(shù)相乘,其乘積的符號為相乘兩數(shù)符號的異或值,數(shù)值則為兩數(shù)絕對值之積。第四十頁,共一百八十二頁,編輯于2023年,星期五假設:[X]原=X0X1X2……Xn
[Y]原=Y0Y1Y2……Yn則:[X?Y]原=[X]原?[Y]原
=(X0⊕Y0)|(X1X2……Xn)?(Y1Y2……Yn)符號“|”表示把符號位和數(shù)值位拼接起來。第四十一頁,共一百八十二頁,編輯于2023年,星期五先來看手工乘法的運算過程。設X=0.1101Y=0.1011,計算乘積X?Y。
0.1101×0.101111011101000011010.10001111第四十二頁,共一百八十二頁,編輯于2023年,星期五即X?Y=0.10001111,相乘兩數(shù)同號,結果符號為正。在手工計算時,逐次按乘數(shù)每位的取值是1還是0,決定相加數(shù)取被乘數(shù)的值還是取零值,而且相加數(shù)逐次向左偏移1位,最后一起相加求積。若計算機完全模擬筆算乘法步驟,將會有困難:第一,機器難以實現(xiàn)四個位積的一次相加;第二,乘積位數(shù)增長了一倍。第四十三頁,共一百八十二頁,編輯于2023年,星期五為此,在計算機中的運算方法作了如下改進:①、計算機一次加法操作只能求出兩數(shù)之和,因此每求得一個相加數(shù),就與上次部分積相加。②、在求本次部分積時,前一次部分積的最低位不再參與運算,因此可將其右移一位,相加數(shù)可直送而不必偏移,于是用N位加法器就可以實現(xiàn)兩個N位數(shù)相乘。第四十四頁,共一百八十二頁,編輯于2023年,星期五③、部分積右移時,乘數(shù)寄存器同時右移一位,這樣可以一直用乘數(shù)寄存器的最低位來控制相加數(shù)(取被乘數(shù)或零),同時乘數(shù)寄存器的最高位可接收部分積右移出來的一位,因此,完成乘法運算后,乘積分開放在了兩個寄存器中。如圖3-7是計算機內實現(xiàn)原碼乘法的邏輯框圖,其中A、B、C三個寄存器分別存放部分積、被乘數(shù)和乘數(shù)。第四十五頁,共一百八十二頁,編輯于2023年,星期五圖3-7實現(xiàn)原碼一位乘的邏輯電路框圖
第四十六頁,共一百八十二頁,編輯于2023年,星期五乘法開始時,A寄存器被清為零,作為初始部分積。被乘數(shù)放在B寄存器中,乘數(shù)放在C寄存器中。實現(xiàn)部分積和被乘數(shù)相加是通過給出A→ALU和B→ALU命令,在ALU中完成的。ALU的輸出經(jīng)過移位電路向右移一位送入A寄存器中。C寄存器是用移位寄存器實現(xiàn)的,其最低位用作B→ALU的控制命令。第四十七頁,共一百八十二頁,編輯于2023年,星期五加法器最低一位的值右移時將移入C寄存器的最高數(shù)值位,使相乘之積的低位部分保存進C寄存器中,原來的乘數(shù)在逐次右移過程中丟失了。圖中還給出了一個計數(shù)器,用來控制逐次相乘的次數(shù)。它的初始值放乘數(shù)位數(shù),計算結束時給出結束乘運算的控制信號。第四十八頁,共一百八十二頁,編輯于2023年,星期五由于在運算過程中,被乘數(shù)寄存器的值保持不變,而部分積寄存器和乘數(shù)寄存器的值一直變化,可以用這兩個寄存器值的變化過程描述這種計算方法。例:設X=0.1101,Y=0.1011,求X?Y=?解:[X]原=01101[Y]原=01011,用數(shù)值位計算,部分積取雙符號位,實際用來保存加運算時的進位信息。第四十九頁,共一百八十二頁,編輯于2023年,星期五部分積乘數(shù)說明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位,形成最后結果乘數(shù)各位全部被移出第五十頁,共一百八十二頁,編輯于2023年,星期五判定符號,因為X0⊕Y0=0⊕0=0,所以得到:
[X?Y]原=010001111
即:X?Y=+0.10001111第五十一頁,共一百八十二頁,編輯于2023年,星期五(2)定點原碼兩位乘法原碼兩位乘即從乘數(shù)的最低位開始每次取兩位乘數(shù)與被乘數(shù)相乘得到一次部分積,它與原碼一位乘一樣,符號位的運算和數(shù)值部分是分開進行的,但由于每次是用兩位乘數(shù)的狀態(tài)來決定新的部分積如何形成,因此運算步驟減少,提高了運算速度。第五十二頁,共一百八十二頁,編輯于2023年,星期五兩位乘數(shù)共有四種可能組合,每種組合對應于以下操作:00——相當于0?X。部分積Pi右移兩位,不進行其他運算。01——相當于1?X。部分積Pi+X,右移兩位。10——相當于2?X。部分積Pi+2X,右移兩位。11——相當于3?X。部分積Pi+3X,右移兩位。第五十三頁,共一百八十二頁,編輯于2023年,星期五與前面的一位乘法相比,多出了+2X和+3X兩種情況。把X左移一位可得2X,在機器上可采用向左斜送1位來實現(xiàn)??墒?3X一般不能一次完成,如分成兩次進行,又降低了計算速度。解決問題的辦法是:以(4X-X)來代替3X運算,在本次運算中只執(zhí)行-X,而+4X歸并到下一步執(zhí)行。第五十四頁,共一百八十二頁,編輯于2023年,星期五此時部分積已右移了兩位,上一步欠下的+4X已變成+X。推導過程如下:設之前得到的部分積為Pi,右移兩位相當于乘2-2。正常運算為加3X右移兩位,即(Pi+4X-X)?2-2;此式子等于(Pi-X)?2-2+X,此時表示操作步驟為Pi減X后右移兩位再加X。第五十五頁,共一百八十二頁,編輯于2023年,星期五在實際線路中用一個觸發(fā)器C來記錄是否欠下+4X,若是,則1→C,控制在下一步補上所欠數(shù)據(jù)。因此實際操作用Yi-1、Yi、C三位來控制,運算規(guī)則可如表3-13所示。第五十六頁,共一百八十二頁,編輯于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第五十七頁,共一百八十二頁,編輯于2023年,星期五例:已知X=-0.100111,Y=0.101110,求X?Y=?解:[X]原=1.100111,[Y]原=0.101110,
|X|=0.100111,[|X|]補=0.100111,
[-|X|]補=1.011001第五十八頁,共一百八十二頁,編輯于2023年,星期五部分積乘數(shù)欠位說明000000000+)001001110001011100初始狀態(tài)100,部分積+2X0→C001001110000010011+)111011001100010110右移兩位110,部分積-|X|1→C111101100111111011+)111011001001000101右移兩位101,部分積-|X|1→C111010100111110101+)000100111000010001右移兩位001,部分積+X000011100000010001不移位,得到結果第五十九頁,共一百八十二頁,編輯于2023年,星期五判定符號,因為X0⊕Y0=1⊕0=1,所以得到:[X?Y]原=1011100000010
即X?Y=-0.011100000010對于原碼兩位乘,需注意:①、部分積和被乘數(shù)采用三個符號位。因為在原碼兩位乘法中,有加2X的操作,因此絕對值有可能大于2。此時仍需保留進位,以最高位的符號位作為處理過程中的符號。第六十頁,共一百八十二頁,編輯于2023年,星期五②、減|X|的操作是通過加[-|X|]補來實現(xiàn)的。這是因為原碼的減法實現(xiàn)麻煩,需考慮絕對值大小,并判斷結果符號,不如先當成補碼處理,因此,右移時按補碼的移位規(guī)則進行處理。(減X時當成補碼處理,有可能結果為負,但每次的減都意味著下一步會補上所欠的4X,當補上后結果肯定為正值,此時正數(shù)的補碼、原碼、絕對值都是一樣的。)第六十一頁,共一百八十二頁,編輯于2023年,星期五③、當乘數(shù)為偶數(shù)個數(shù)值位時,乘數(shù)的符號位設置兩位“00”,以便最后一步能處理前面可能留下的欠帳,但不用移位。當乘數(shù)為奇數(shù)個數(shù)值位時,乘數(shù)符號位可設置一位“0”,此時最后一次移一位。第六十二頁,共一百八十二頁,編輯于2023年,星期五2、補碼乘法(1)定點補碼一位乘法原碼乘法存在兩個明顯的缺點:一是符號位需要單獨運算,最后給運算結果賦以正確符號,這給運算帶來麻煩;二是對于采用補碼存儲的機器,從存儲器或寄存器中取出的是操作數(shù)的補碼,需先將其轉換成原碼,然后才能進行乘法運算,再對結果轉換成補碼保存。很不方便。第六十三頁,共一百八十二頁,編輯于2023年,星期五①、補碼與真值之間的關系設[X]補=Xs.X1X2……Xn當X≥0時,Xs=0,[X]補=0.X1X2……Xn=X當X<0時,Xs=1,[X]補=1.X1X2……Xn=2+XX=1.X1X2……Xn-2=-1+0.X1X2……Xn=-Xs+0.X1X2……Xn所以:X=-Xs+0.X1X2……Xn第六十四頁,共一百八十二頁,編輯于2023年,星期五②、補碼乘法算法的推導設被乘數(shù)[X]補=Xs.X1X2……Xn,乘數(shù)[Y]補=Ys.Y1Y2……Yn,則有[X?Y]補=[X]補?Y證明:(1)被乘數(shù)X符號任意,乘數(shù)Y符號為正。第六十五頁,共一百八十二頁,編輯于2023年,星期五根據(jù)補碼定義:
[X]補=2+X=2n+1+X(mod2)
[Y]補=Y=0.Y1Y2……Yn[X]補?[Y]補=2n+1?Y+X?Y=2(Y1Y2……Yn)+X?Y其中,Y1Y2……Yn是大于0的正整數(shù),根據(jù)模運算性質有:
2(Y1Y2……Yn)=2(mod2)第六十六頁,共一百八十二頁,編輯于2023年,星期五得到[X]補?[Y]補=2+X?Y=[X?Y]補(mod2)即[X?Y]補=[X]補?[Y]補=[X]補?Y(2)被乘數(shù)X符號任意,乘數(shù)Y符號為負。
[X]補=Xs.X1X2……Xn[Y]補=1.Y1Y2……Yn=2+YY=[Y]補-2=0.Y1Y2……Yn-1則X?Y=X(0.Y1Y2……Yn)-X第六十七頁,共一百八十二頁,編輯于2023年,星期五[X?Y]補=[X(0.Y1Y2……Yn)-X]補
=[X(0.Y1Y2……Yn)]補+[-X]補
=[X(0.Y1Y2……Yn)]補-[X]補因為0.Y1Y2……Yn>0,根據(jù)上面的討論,則:[X(0.Y1Y2……Yn)]補
=[X]補(0.Y1Y2……Yn)得到:
[X?Y]補=[X]補(0.Y1Y2……Yn)-[X]補第六十八頁,共一百八十二頁,編輯于2023年,星期五綜合上面兩種情況,則當被乘數(shù)X和乘數(shù)Y的符號都任意時[X?Y]補=[X]補(0.Y1Y2……Yn)-[X]補?Ys=[X]補(-Ys+0.Y1Y2……Yn)
=[X]補?Y第六十九頁,共一百八十二頁,編輯于2023年,星期五③、補碼乘法比較法——布斯(Booth)乘法為了得出補碼一位乘法算法,將上式展開加以變換,即:[X?Y]補=[X]補[-Ys+Y12-1+Y22-2+…+Yn2-n]=[X]補[-Ys+(Y1-Y12-1)+(Y22-1-Y22-2)+…+(Yn2-(n-1)-Yn2-n)]第七十頁,共一百八十二頁,編輯于2023年,星期五=[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)第七十一頁,共一百八十二頁,編輯于2023年,星期五由上式可以發(fā)現(xiàn),每一步乘法在前次部分積的基礎上(開始時部分積為0),根據(jù)Yi+1-Yi(i=n,…2,1)的值決定對[X]補的操作,然后右移一位,得到新的部分積。如此重復n步。第n+1步由(Y1-Ys)的值決定對[X]補的操作,但不用移位,即得到[X?Y]補。第七十二頁,共一百八十二頁,編輯于2023年,星期五在計算機中,由Yi+1-Yi的值決定進行什么操作,實際上并不是做減法,而是比較Yi、Yi+1的值。這種根據(jù)相鄰兩位的比較結果決定運算操作的方法稱為“比較法”。因為此方法是由Booth夫婦最早提出來的,又稱為Booth算法。Booth算法描述如下:①、參加運算的數(shù)用補碼表示;第七十三頁,共一百八十二頁,編輯于2023年,星期五②、符號位參加運算;③、乘數(shù)最低位后面增加一位附加位Yi+1(初值為0),以后逐次比較相鄰兩位并按表3-14所列規(guī)則運算,算法進行n+1步(n是不包括符號位在內的字長),但第n+1步不移位。④、移位要按補碼的移位規(guī)則進行。第七十四頁,共一百八十二頁,編輯于2023年,星期五表3-14Booth比較法運算規(guī)則YnYn+1操作YnYn+1操作0001部分積加0,右移一位部分積加[X]補,右移一位011部分積加[-X]補,右移一位部分積加0,右移一位第七十五頁,共一百八十二頁,編輯于2023年,星期五例:已知:X=0.0101,Y=-0.1101,求X?Y=?解:[X]補=0.0101,
[Y]補=1.0011,
[-X]補=1.1011第七十六頁,共一百八十二頁,編輯于2023年,星期五部分積乘數(shù)說明000000+)111011100110初始狀態(tài)YnYn+1=10,部分積加[-X]補111011111101+)000000110011部分積和乘數(shù)右移一位YnYn+1=11,部分積加0111101111110+)000101111001部分積和乘數(shù)右移一位YnYn+1=01,部分積加[X]補000011000001+)000000111100部分積和乘數(shù)右移一位YnYn+1=00,部分積加0000001000000+)111011111110部分積和乘數(shù)右移一位YnYn+1=10,部分積加[-X]補111011111110最后不移位第七十七頁,共一百八十二頁,編輯于2023年,星期五[X?Y]補=1.10111111,X?Y=-0.01000001實現(xiàn)補碼一位乘法(Booth算法)的硬件原理框圖如圖3-8所示。第七十八頁,共一百八十二頁,編輯于2023年,星期五圖3-8實現(xiàn)補碼一位乘的邏輯電路框圖第七十九頁,共一百八十二頁,編輯于2023年,星期五乘法步驟如下:①、初始化時被乘數(shù)→B,乘數(shù)→C,并增加一位附加位,初值為0,0→A,0→CTR;②、CnCn+1=00或11時,A+0→A;
CnCn+1=01時,A+B→A;
CnCn+1=10時,A-B→A。③、CTR+1→CTR,若CTR≠n+1,繼續(xù);若CTR=n+1,結束。第八十頁,共一百八十二頁,編輯于2023年,星期五④、A、C聯(lián)合右移一位,轉步驟②。⑤、最后乘積高位在A,低位在C(除去最后兩位)。此算法的優(yōu)點是當遇到代碼為連續(xù)“1”或連續(xù)“0”時,只需連續(xù)移位,為實現(xiàn)加速乘法創(chuàng)造了條件。缺點是乘數(shù)要增加一個附加位,第n+1步不移位,而且乘法結束時,乘積低位在寄存器中的位置不符合要求(需丟掉最后兩位)。第八十一頁,共一百八十二頁,編輯于2023年,星期五(2)定點補碼兩位乘法根據(jù)補碼一位乘法的規(guī)則,將比較YnYn+1的狀態(tài)與比較Yn-1Yn的狀態(tài)所執(zhí)行的操作合并成一步,便很容易推導出補碼兩位乘法的算法,運算規(guī)則如表3-15所示。第八十二頁,共一百八十二頁,編輯于2023年,星期五表3-15補碼兩位乘法運算規(guī)則Yn-1YnYn+1操作Yn-1YnYn+1操作000部分積+0,右移兩位100部分積+2[-X]補,右移兩位001部分積+[X]補,右移兩位101部分積+[-X]補,右移兩位010部分積+[X]補,右移兩位110部分積+[-X]補,右移兩位011部分積+2[X]補,右移兩位111部分積+0,右移兩位第八十三頁,共一百八十二頁,編輯于2023年,星期五進行定點補碼兩位乘法運算需注意如下問題:①、判別位。乘數(shù)的判別位涉及其附加位和符號位。在乘數(shù)的最低位后,一定要增加一位附加位,其初始值為0。定點補碼兩位乘法是從判別乘數(shù)的最低兩位與附加位的組合值開始的。第八十四頁,共一百八十二頁,編輯于2023年,星期五乘數(shù)的符號位要視數(shù)值部分的位數(shù)來決定。若數(shù)值部分的位數(shù)為偶數(shù),則必須采用2位符號位;否則,就采用1位符號位。這就是說,乘數(shù)的數(shù)值部分連同符號位要保證為偶數(shù)。實際上,我們所使用的計算機,一般地說,其字長均為偶數(shù),因此,若乘數(shù)的位數(shù)(包括1位符號位)為計算機的字長,符號位取1位即可。第八十五頁,共一百八十二頁,編輯于2023年,星期五②、加法操作的次數(shù)。定點補碼兩位乘法運算所做加法操作的次數(shù)為乘數(shù)的位數(shù)(包括符號位)除以2的值。③、部分積的符號位??刹捎?位符號位,以保留正確的進位及符號位。第八十六頁,共一百八十二頁,編輯于2023年,星期五④、符號位擴展。在進行定點補碼兩位乘法運算中,在進行右移2位操作時,要注意符號位的擴展,即右移時符號要一起移,空出的符號位以符號的原值填充。⑤、最后一步的移位。視乘數(shù)的符號位而定。若符號位為2位,則不用移位;若符號位為1位,則要進行右移1位的操作。第八十七頁,共一百八十二頁,編輯于2023年,星期五例:已知X=0.0110011,
Y=-0.0110010,求X?Y=?解:[X]補=000.0110011,
[Y]補=1.1001110,
[-X]補=111.10011012[X]補=000.1100110,
2[-X]補=111.0011010第八十八頁,共一百八十二頁,編輯于2023年,星期五部分積乘數(shù)附加位說明0000000000+)1110011010110011100初始狀態(tài)Cn-1CnCn+1=100,+2[-X]補11100110101111100110+)00000000001
01100111右移兩位,Cn-1CnCn+1=111,+011111001101111111001+)00001100111
01011001右移兩位,Cn-1CnCn+1=001,+[X]補00001011000000001011+)11110011010
01010110右移兩位,Cn-1CnCn+1=110,+[-X]補111101100011111011000
00101011最后一次右移一位第八十九頁,共一百八十二頁,編輯于2023年,星期五所以[X?Y]補=1.11011000001010X?Y=-0.00100111110110第九十頁,共一百八十二頁,編輯于2023年,星期五3.3.4除法運算1、原碼除法兩個原碼表示的數(shù)相除,其商的符號為相除兩數(shù)符號的異或值,數(shù)值則用兩數(shù)的絕對值相除求得。設[x]原=xs.x1x2…xn,[y]原=ys.y1y2…yn,則[q]原=(xs⊕ys)|(x1x2…xn/y1y2…yn)第九十一頁,共一百八十二頁,編輯于2023年,星期五定點機中的除法運算對被除數(shù)和除數(shù)有一定的約束。對小數(shù)除法,要求0<|被除數(shù)|<|除數(shù)|,同時必須規(guī)定除數(shù)≠0。商的位數(shù)一般與操作數(shù)位數(shù)相等。(1)恢復余數(shù)法原碼除法也是從手工除法演變而來的。先看手工除法的計算過程。第九十二頁,共一百八十二頁,編輯于2023年,星期五設定x=0.1011,y=0.1101,求x/y=?第九十三頁,共一百八十二頁,編輯于2023年,星期五手工計算二進制除法的規(guī)則是:①、比較被除數(shù)與除數(shù)的大小。根據(jù)前面的約定,被除數(shù)一定小于除數(shù),則上商“0”不做減法,在被除數(shù)最低位后補“0”得到新余數(shù),再與右移一位的除數(shù)比較;第九十四頁,共一百八十二頁,編輯于2023年,星期五②、如果余數(shù)大于除數(shù),則上商“1”,并執(zhí)行一次減法,得到一個新的余數(shù),將余數(shù)最低位補“0”,再與右移一位的除數(shù)比較;如果余數(shù)小于除數(shù),則上商“0”不做減法,將余數(shù)最低位補“0”,再與右移一位的除數(shù)比較。③、重復步驟②,直到余數(shù)為0或得到的商的位數(shù)滿足精度要求為止。第九十五頁,共一百八十二頁,編輯于2023年,星期五在計算機中實現(xiàn)除法運算要考慮硬件電路結構特點,因此在計算機中除法有如下改進做法。①、計算機直接做減法試探,根據(jù)所得余數(shù)的符號來判斷被除數(shù)(余數(shù))與除數(shù)的大小。第九十六頁,共一百八十二頁,編輯于2023年,星期五如果余數(shù)符號為0(差為正數(shù)),表示被除數(shù)(余數(shù))大于除數(shù)(夠減),上商“1”;如果余數(shù)符號為1(差為負數(shù)),表示被除數(shù)(余數(shù))小于除數(shù)(不夠減),上商“0”,不夠減而減了,說明此次減法運算是不該進行的,必須加上除數(shù)以恢復原來的余數(shù)。第九十七頁,共一百八十二頁,編輯于2023年,星期五②、手工算法中,被除數(shù)(余數(shù))補“0”與右移一位的除數(shù)比較,計算機是用左移被除數(shù)(余數(shù))來實現(xiàn)的。第九十八頁,共一百八十二頁,編輯于2023年,星期五③、手工除法中,從高位向低位逐位求商。在計算機中,直接把求得的每一位商寫進商寄存器不易實現(xiàn),通常是把求得的每一位商上到商值寄存器的最低一位。做法是:每次上商前將商值寄存器與被除數(shù)(余數(shù))寄存器聯(lián)合左移一位,空出最低一位上每次求得的商值。④、被除數(shù)(余數(shù))減除數(shù)的操作用加[-|y|]補實現(xiàn)。第九十九頁,共一百八十二頁,編輯于2023年,星期五這種因為不夠減而要恢復原來余數(shù)的方法,叫做恢復余數(shù)法?;謴陀鄶?shù)法的運算步驟隨操作數(shù)組合的不同而改變,這使得控制線路比較復雜,而且運算速度較慢。為此,也可用改進后的不恢復余數(shù)法(加減交替法)來計算。第一百頁,共一百八十二頁,編輯于2023年,星期五(2)不恢復余數(shù)法(加減交替法)分析原碼恢復余數(shù)法得知,若第i-1次求商的余數(shù)為正ri-1時,下一次求商的方法是:ri=2ri-1-|y|①、若ri≥0,上商“1”,下一步ri+1=2ri-|y|;②、若ri<0,上商“0”,恢復余數(shù)ri+|y|,下一步ri+1=2(ri+|y|)-|y|=2ri+|y|。第一百零一頁,共一百八十二頁,編輯于2023年,星期五此式表明,當某一次求商出現(xiàn)不夠減時(ri<0),本次商上0,繼續(xù)求下一位商時,可以不必恢復余數(shù),而是直接將負的差值左移一位后(得2ri)再加上除數(shù),其效果與恢復余數(shù)后再左移一位減除數(shù)是等效的。由此得出不恢復余數(shù)法的運算規(guī)則為:第一百零二頁,共一百八十二頁,編輯于2023年,星期五當余數(shù)為正時,上商“1”,做2ri-|y|的運算;當余數(shù)為負時,上商“0”,做2ri+|y|的運算。這里已經(jīng)沒有恢復余數(shù)的問題,只是將余數(shù)左移一位后加上或減去除數(shù),因此又稱為加減交替法。第一百零三頁,共一百八十二頁,編輯于2023年,星期五例:x=0.1011,y=-0.1101,求[x/y]原=?解:|x|=0.1011,
|y|=0.1101,
[-|y|]補=1.0011第一百零四頁,共一百八十二頁,編輯于2023年,星期五被除數(shù)(余數(shù))商說明00.1011+)11.00110.0000初始狀態(tài)減去除數(shù)11.111011.1100+)00.11010.00000.0000余數(shù)為負,商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ù)為負,商0左移一位加除數(shù)00.01110.1101余數(shù)為正,商1第一百零五頁,共一百八十二頁,編輯于2023年,星期五相除兩數(shù)符號位異或得到結果為1,所以:[x/y]原=1.1101
即:x/y=-0.1101由此例可見,n位小數(shù)除法共上商n+1次,第一次上的商是整數(shù)部分,根據(jù)前面的約定,這一位一定是0。第一百零六頁,共一百八十二頁,編輯于2023年,星期五最后得到的余數(shù)并不就是0.0111,因為在計算過程中對余數(shù)進行了四次左移操作,所以正確的余數(shù)是0.0111×2-4,并且在通常的機器中,把余數(shù)符號設為和被除數(shù)符號相同。第一百零七頁,共一百八十二頁,編輯于2023年,星期五2、補碼不恢復余數(shù)法在原碼除法中,符號位不參加運算,操作數(shù)都取絕對值。因此,根據(jù)余數(shù)的符號,即可判斷被除數(shù)(余數(shù))減除數(shù)是否“夠”減,以確定下一步的運算。而補碼除法,操作數(shù)和商都要用補碼表示,符號位要參加運算。第一百零八頁,共一百八十二頁,編輯于2023年,星期五(1)兩數(shù)符號任意時比較大小的方法當兩數(shù)符號任意時,除法運算仍需比較兩數(shù)的絕對值大小。當被除數(shù)或余數(shù)的絕對值大于或等于除數(shù)的絕對值時,表示“夠減”;當被除數(shù)或余數(shù)的絕對值小于除數(shù)的絕對值時表示“不夠減”。第一百零九頁,共一百八十二頁,編輯于2023年,星期五為了判斷“夠減”與否,當兩數(shù)同號時,應做減法;此時,若得到的余數(shù)與除數(shù)同號(也即與被除數(shù)同號),表示“夠減”,否則表示“不夠減”。當兩數(shù)異號時,應做加法;此時若得到的余數(shù)與除數(shù)異號表示“夠減”(也即與被除數(shù)同號),否則表示“不夠減”。此算法見表3-16。第一百一十頁,共一百八十二頁,編輯于2023年,星期五表3-16比較算法表比較[x]補與[y]補的符號求余數(shù)[ri]補比較[r]補與[y]補的符號同號[x]補-[y]補同號表示“夠減”異號[x]補+[y]補異號表示“夠減”第一百一十一頁,共一百八十二頁,編輯于2023年,星期五(本來應該比較余數(shù)符號與被除數(shù)符號是否相同來判斷是否夠減,但被除數(shù)在運算過程中逐漸消失,所以改成了余數(shù)和除數(shù)進行比較。)第一百一十二頁,共一百八十二頁,編輯于2023年,星期五(2)上商規(guī)則在補碼除法中,商也用補碼表示,因此正商和負商的上商規(guī)則不同。如果被除數(shù)與除數(shù)同號,商為正(原碼形式),則夠減時商為“1”,不夠減時商為“0”。第一百一十三頁,共一百八十二頁,編輯于2023年,星期五如果被除數(shù)與除數(shù)異號,商為負(補碼形式),則商為1、為0要根據(jù)具體商的情況決定(從后向前第一個1出現(xiàn)以前商上原碼,以后則商上反碼)。但商事先是不知道的,所以約定商的末位采用“恒置1”的舍入原則,則除了末位商外,其余各位商反碼,即夠減時商為“0”,不夠減時商為“1”。結合比較規(guī)則與上商規(guī)則,便可得到補碼除法商值的確定辦法,見表3-17。第一百一十四頁,共一百八十二頁,編輯于2023年,星期五表3-17商值的確定[x]補與[y]補商[r]補與[y]補商值同號正同號表示“夠減”1異號表示“不夠減”0異號負異號表示“夠減”0同號表示“不夠減”1第一百一十五頁,共一百八十二頁,編輯于2023年,星期五(3)商符的確定在補碼除法中,符號位參加運算,根據(jù)前面的討論,為了比較被除數(shù)和除數(shù)的大小,第一步應該是:當被除數(shù)和除數(shù)同號時,做[x]補-[y]補=[r]補;當被除數(shù)和除數(shù)異號時,做[x]補+[y]補=[r]補。第一百一十六頁,共一百八十二頁,編輯于2023年,星期五因為是定點小數(shù)除法,被除數(shù)絕對值必須小于除數(shù)的絕對值,否則商大于1而溢出。因此,當被除數(shù)和除數(shù)同號時,[r0]補必與[y]補異號,按上商規(guī)則,商應上“0”,它恰好是正商的符號;當被除數(shù)和除數(shù)異號時,[r0]補必與[y]補同號,按上商規(guī)則,商應上“1”,它恰好是負商的符號。這就是說,商符是在求商值的過程中自動形成的。第一百一十七頁,共一百八十二頁,編輯于2023年,星期五(4)新余數(shù)的確定當被除數(shù)和除數(shù)同號時,比較它們的大小做減法。如果所得的余數(shù)與除數(shù)同號表示“夠減”,再求新余數(shù)時,將余數(shù)左移一位,繼續(xù)做減法,2[ri]補-[y]補;如果所得余數(shù)與除數(shù)異號,表示“不夠減”,此時不必恢復余數(shù),直接將ri左移一位做加法,2[ri]補+[y]補。第一百一十八頁,共一百八十二頁,編輯于2023年,星期五當被除數(shù)和除數(shù)異號時,根據(jù)前面的討論,余數(shù)與除數(shù)異號時表示“夠減”,余數(shù)與除數(shù)同號表示“不夠減”。因為兩數(shù)異號時,求余數(shù)是做加法。因此,當“夠減”時,應將ri左移一位繼續(xù)做加法,[ri+1]補=2[ri]補+[y]補;當不夠減時,應恢復余數(shù),因求新余數(shù)時做加法,則不恢復余數(shù)時應做減法,即[ri+1]補=2[ri]補-[y]補。綜合上面的討論,即可得到求新余數(shù)的規(guī)則,見表3-18所示。第一百一十九頁,共一百八十二頁,編輯于2023年,星期五表3-18新余數(shù)的確定辦法[ri]補與[y]補商新余數(shù)同號1[ri+1]補=2[ri]補-[y]補異號0[ri+1]補=2[ri]補+[y]補第一百二十頁,共一百八十二頁,編輯于2023年,星期五由此,可以得出補碼加減交替法的運算步驟:①、參加運算的數(shù)用補碼表示。②、符號位參加運算。③、被除數(shù)與除數(shù)同號,做被除數(shù)減除數(shù)的運算;被除數(shù)與除數(shù)異號,做被除數(shù)加除數(shù)的運算。第一百二十一頁,共一百八十二頁,編輯于2023年,星期五④、如果余數(shù)與除數(shù)同號,商上“1”,[ri+1]補=2[ri]補-[y]補;如果余數(shù)與除數(shù)異號,商上“0”,[ri+1]補=2[ri]補+[y]補。⑤、重復步驟④n次(n是不包括符號位在內的字長),商的末位恒置1。上述方法是在末位恒置1的情況下推導的,這種方法操作簡單,易于實現(xiàn)。此時,最大的誤差為2-n。當精度要求不高時,可以采用此法。第一百二十二頁,共一百八十二頁,編輯于2023年,星期五例:已知x=0.1000,y=-0.1010,求x/y=?解:[x]補=0.1000,
[y]補=1.0110,
[-y]補=0.1010第一百二十三頁,共一百八十二頁,編輯于2023年,星期五被除數(shù)(余數(shù))商說明00.1000+)11.01100.0000初始狀態(tài)[x]補與[y]補異號,+[y]補11.111011.1100+)00.10100.00010.001[r]補與[y]補同號,商“1”左移一位+[-y]補00.011000.1100+)11.01100.00100.010[r]補與[y]補異號,商“0”左移一位+[y]補00.001000.0100+)11.01100.01000.100[r]補與[y]補異號,商“0”左移一位+[y]補11.101011.0100+)00.10100.10011.001[r]補與[y]補同號,商“1”左移一位11.11101.0011最低位恒置“1”第一百二十四頁,共一百八十二頁,編輯于2023年,星期五[x/y]補=1.0011,所以x/y=-0.1101,余數(shù)為-0.0010×2-4第一百二十五頁,共一百八十二頁,編輯于2023年,星期五3.4浮點數(shù)的運算3.4.1浮點數(shù)的加減運算3.4.2浮點數(shù)的乘除運算第一百二十六頁,共一百八十二頁,編輯于2023年,星期五3.4.1浮點數(shù)的加減運算設有兩個浮點數(shù)x和y,x=2Ex×Mx,y=2Ey×My。其中Mx和My分別為x和y的尾數(shù),Ex和Ey分別為x和y的階碼??紤]生活中十進制數(shù)采用科學計數(shù)法表示時數(shù)據(jù)的運算關系,兩個規(guī)格化浮點數(shù)進行加減運算需要以下步驟完成。第一百二十七頁,共一百八十二頁,編輯于2023年,星期五(1)對階在浮點數(shù)中,階碼的大小實際反映了數(shù)的小數(shù)點位置。因此,當兩個浮點數(shù)的階碼不同時,表示兩數(shù)小數(shù)點的位置是不同的。這樣的兩個浮點數(shù)則不能將它們的尾數(shù)直接相加減,必須使它們的階碼相等,小數(shù)點位置對齊后,才能進行尾數(shù)的加減,這個過程稱為對階。第一百二十八頁,共一百八十二頁,編輯于2023年,星期五對階的第一步是求階差ΔE=Ex-Ey。若ΔE=0,則兩數(shù)的階碼相等,不需對階;若ΔE≠0,就需要對階,按階差值|ΔE|的大小來調整階碼。第一百二十九頁,共一百八十二頁,編輯于2023年,星期五對階時,由于浮點數(shù)采用規(guī)格化形式,若大階向小階看齊,則必須要求對應大階的尾數(shù)向左移位,尾數(shù)左移會引起最高有效位的丟失,造成較大誤差。因此,對階的規(guī)則是小階向大階看齊,即使階碼小的尾數(shù)向右移位,每右移一位階碼加1,直至兩數(shù)的階碼相等為止。右移的位數(shù)等于階差|ΔE|。對此過程來說,數(shù)位也有丟失,但丟失的是尾數(shù)的低位部分,誤差較小。第一百三十頁,共一百八十二頁,編輯于2023年,星期五(2)尾數(shù)加減對階完畢后,小數(shù)點的位置就對齊了。這時可以按定點數(shù)補碼加減運算的規(guī)則求兩尾數(shù)的和或差。(3)規(guī)格化尾數(shù)加減運算之后得到的數(shù)可能不是規(guī)格化數(shù),為了增加有效數(shù)字的位數(shù),提高運算精度,必須進行結果規(guī)格化操作。第一百三十一頁,共一百八十二頁,編輯于2023年,星期五規(guī)格化的尾數(shù)M應滿足:1/2≤|M|<1設尾數(shù)用雙符號位補碼表示,經(jīng)過加減運算之后,可能出現(xiàn)以下6種情況,即:①、00.1x……x②、11.0x……x③、00.0x……x第一百三十二頁,共一百八十二頁,編輯于2023年,星期五④、11.1x……x⑤、01.xx……x⑥、10.xx……x第①和②種情況,符合規(guī)格化數(shù)的定義,已是規(guī)格化數(shù)。第③和④種情況不是規(guī)格化數(shù),需要使尾數(shù)左移以實現(xiàn)規(guī)格化,這個過程稱為左規(guī)。尾數(shù)每左移一位,階碼相應減1,直至成為規(guī)格化數(shù)為止。第一百三十三頁,共一百八十二頁,編輯于2023年,星期五第⑤和⑥種情況在定點加減運算中稱為溢出;但在浮點加減運算中,只表明此時尾數(shù)的絕對值大于1,而非真正的溢出。這種情況應將尾數(shù)右移以實現(xiàn)規(guī)格化。這個過程稱為右規(guī)。尾數(shù)每右移一位,階碼相應加1。第一百三十四頁,共一百八十二頁,編輯于2023年,星期五(4)舍入由于受到硬件的限制,在對階和右規(guī)處理之后有可能將尾數(shù)的低位丟失,這會引起一些誤差。為了減少誤差,可設置附加電路保存一些移出的數(shù)位,然后按一定的舍入方法進行處理。舍入方法有很多種,最簡單的是恒舍法,即無條件的丟掉正常尾數(shù)最低位之后的全部數(shù)值。為了提高精度,也可考慮采用0舍1入法進行處理。第一百三十五頁,共一百八十二頁,編輯于2023年,星期五0舍1入法考慮右移時被丟掉數(shù)位的最高位,當最高位為0時,則舍去;如果最高位為1,則將尾數(shù)的末位加1。此法舍入誤差比較小,既適用于原碼也適用于補碼。但當被丟掉的數(shù)位的最高位為1時,要完成一次加法運算,這次加法又有可能造成尾數(shù)溢出。此時,須再進行右規(guī)。第一百三十六頁,共一百八十二頁,編輯于2023年,星期五(5)溢出判斷與定點加減法一樣,浮點加減運算最后一步也需要判溢出。在前面已經(jīng)指出,當尾數(shù)之和(差)出現(xiàn)01.xx……x或10.xx……x時,并不表示溢出,需要將此數(shù)右規(guī)后,再根據(jù)階碼來判斷該浮點運算結果是否溢出。第一百三十七頁,共一百八十二頁,編輯于2023年,星期五浮點數(shù)的溢出情況由階碼的符號決定,若階碼也用雙符號位補碼表示,當:階碼為01.xx……x,表示上溢,此時,浮點數(shù)真正溢出,機器需停止運算,做溢出中斷處理。階碼為10.xx……x,表示下溢,浮點數(shù)值趨于零,機器不做溢出處理,而是按機器零處理。第一百三十八頁,共一百八十二頁,編輯于2023年,星期五例:設有兩浮點數(shù)x=0.101110×2-01,y=-(0.101011)×2-10,求x+y。(設定數(shù)據(jù)格式為:階碼4位,用移碼(偏移值為23)表示;尾數(shù)8位,用補碼表示,各包含一位符號位)第一百三十九頁,共一百八十二頁,編輯于2023年,星期五解:把x和y表示成浮點數(shù)格式為:[x]浮=0111;0.1011100[y]浮=0110;1.0101010(1)對階求階差:ΔE=Ex-Ey=-1-(-2)=1ΔE=1,表示Ex>Ey。按對階規(guī)則,將My右移一位,Ey+1→Ey,得:[y]浮=0111;1.10101010第一百四十頁,共一百八十二頁,編輯于2023年,星期五(2)尾數(shù)求和Mx+My=00.1011100+11.1010101=00.01100010(3)規(guī)格化由于結果的尾數(shù)是非規(guī)格化的數(shù),故應左規(guī)。尾數(shù)每左移一位,階碼減1,直至尾數(shù)成為規(guī)格化數(shù)為止。最后結果為:[x+y]浮=0110;0.1100010第一百四十一頁,共一百八十二頁,編輯于2023年,星期五此例中不需舍入,且運算過程中階碼沒有溢出。故:x+y=(0.110001)×2-10第一百四十二頁,共一百八十二頁,編輯于2023年,星期五3.4.2浮點數(shù)的乘除運算1、乘法步驟兩浮點數(shù)相乘,其乘積的階碼應為相乘兩數(shù)的階碼之和,其乘積的尾數(shù)應為相乘兩數(shù)的尾數(shù)之積。即:x×y=(Mx×My)×2(Ex+Ey)第一百四十三頁,共一百八十二頁,編輯于2023年,星期五(1)階碼相加兩個浮點數(shù)的階碼相加,如果階碼用補碼表示,階碼相加之后無需校正;當階碼用偏移量為2n的移碼表示時,階碼相加后要減去一個偏移量2n。第一百四十四頁,共一百八十二頁,編輯于2023年,星期五這是因為根據(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第一百四十五頁,共一百八十二頁,編輯于2023年,星期五考慮到移碼的定義范圍及2n的二進制表示,減去2n實際也即是對符號位取反。此時移碼運算可表示為:兩數(shù)和的移碼等于求兩數(shù)移碼的和并把符號位取反??紤]補碼表示與移碼表示的關系,此時引入用補碼處理的計算公式為:[Ex+Ey]移=[Ex]移+[Ey]補第一百四十六頁,共一百八十二頁,編輯于2023年,星期五(2)尾數(shù)相乘若Mx、My都不為0,則可進行尾數(shù)乘法。尾數(shù)乘法的算法與前述定點數(shù)乘法算法相同。第一百四十七頁,共一百八十二頁,編輯于2023年,星期五(3)尾數(shù)結果規(guī)格化由于x、y都是規(guī)格化數(shù),所以尾數(shù)相乘后的結果一定落在下列范圍內:1/4≤|Mx×My|<1當1/2≤|Mx×My|<1時,乘積已是規(guī)格化數(shù),無須再進行規(guī)格化操作;當1/4≤|Mx×My|<1/2時,則需要左規(guī)一次。左規(guī)時調整階碼后如果發(fā)生階碼下溢,則做機器零處理。第一百四十八頁,共一百八十二頁,編輯于2023年,星期五2、除法步驟兩浮點數(shù)相除,其商的階碼應為相除兩數(shù)的階碼之差,其商的尾數(shù)應為相除兩數(shù)的尾數(shù)之商。即:x÷y=(Mx÷My)×2(Ex-Ey)第一百四十九頁,共一百八十二頁,編輯于2023年,星期五(1)尾數(shù)調整為了保證商的尾數(shù)是一個定點小數(shù),首先需要檢測|Mx|<|My|。如果不小于,則Mx右移一位,Ex+1→Ex,稱為尾數(shù)調整。因為x、y都是規(guī)格化數(shù),所以最多調整一次。第一百五十頁,共一百八十二頁,編輯于2023年,星期五(2)階碼相減兩浮點數(shù)的階碼相減,如果階碼用補碼表示,階碼相減之后無須校正;當階碼用偏移量為2n的移碼表示時,階碼相減后要加上一個偏移量2n。階碼相減后,如有溢出,應另作處理。第一百五十一頁,共一百八十二頁,編輯于2023年,星期五(3)尾數(shù)相除若Mx、My都不為0,則可進行尾數(shù)除法。尾數(shù)除法的算法與前述定點數(shù)除法算法相同。因為開始時已進行了尾數(shù)調整,所以運算結果一定落在規(guī)格化范圍內,即:1/2≤|Mx÷My|<1第一百五十二頁,共一百八十二頁,編輯于2023年,星期五分析上述的浮點四則運算可以發(fā)現(xiàn),對于階碼只有加減運算,對于尾數(shù)則有加、減、乘、除4種運算??梢姼↑c運算器主要由兩個定點運算部件組成,一個是階碼運算部件,用來完成階碼加、減,以及控制對階時小階的尾數(shù)右移次數(shù)和規(guī)格化時對階碼的調整;另一個是尾數(shù)運算部件,用來完成尾數(shù)的四則運算以及判斷尾數(shù)是否已規(guī)格化。此外,還需要有溢出判斷電路等。第一百五十三頁,共一百八十二頁,編輯于2023年,星期五3.5算術邏輯單元ALU3.5.1串行加法器和并行加法器3.5.2ALU的功能和結構第一百五十四頁,共一百八十二頁,編輯于2023年,星期五3.5.1串行加法器和并行加法器計算機除了能實現(xiàn)各種邏輯運算外,還要能實現(xiàn)各種算術運算。由前面運算方法的介紹可看到,計算機中實現(xiàn)各種算術運算的基礎是加法運算,即加、減、乘、除的基本操作都是加法,而加法功能可由加法器電路實現(xiàn)。在2.3.1節(jié)中我們已介紹了基本的半加器和全加器電路。第一百五十五頁,共一百八十二頁,編輯于2023年,星期五1、串行加法器計算機中的數(shù)據(jù)表示通常有多個數(shù)值位,但我們也可只用一個一位的加法器來逐位進行計算,這樣的加法器叫串行加法器,電路結構如圖3-9所示。第一百五十六頁,共一百八十二頁,編輯于2023年,星期五圖3-9一位全加器構成的串行加法器第一百五十七頁,共一百八十二頁,編輯于2023年,星期五2、串行進位的并行加法器將n個全加器順序相連可得到n位加法器,如圖3-10所示。該加法器能同時實現(xiàn)n位數(shù)據(jù)的相加操作,屬于并行加法器。第一百五十八頁,共一百八十二頁,編輯于2023年,星
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年盲頭螺紋嵌件項目可行性研究報告
- 2025年激光掃描測微儀項目可行性研究報告
- 2025至2031年中國打印機輥行業(yè)投資前景及策略咨詢研究報告
- 2025年廢塑料一次擠出成型機項目可行性研究報告
- 2025年分體式活塞項目可行性研究報告
- 2025年亮藍食用色素項目可行性研究報告
- 2025至2030年中國飛行仿真模擬訓練軟件數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年鉆桿護絲項目投資價值分析報告
- 2025至2030年中國酒精泵數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年汽車號牌項目投資價值分析報告
- 桃李面包盈利能力探析案例11000字
- GB/Z 30966.71-2024風能發(fā)電系統(tǒng)風力發(fā)電場監(jiān)控系統(tǒng)通信第71部分:配置描述語言
- 腦梗死的護理查房
- 2025高考數(shù)學專項復習:概率與統(tǒng)計的綜合應用(十八大題型)含答案
- 產后抑郁癥講課課件
- 2024-2030年中國紫蘇市場深度局勢分析及未來5發(fā)展趨勢報告
- 銷售人員課件教學課件
- LED大屏技術方案(適用于簡單的項目)
- 2024智慧城市數(shù)據(jù)采集標準規(guī)范
- Lesson 6 What colour is it(教學設計)-2023-2024學年接力版英語三年級下冊
- 歷年國家二級(Python)機試真題匯編(含答案)
評論
0/150
提交評論