計算機定點乘法運算,歸納起來有兩種方法

實現乘法運算的方法較多,歸納起來不外乎兩種方法:一是軟件方法,一是硬件方法。軟件方法就是利用機器的基本指令編寫子程序,當需要作乘法運算時,通過調用子程序實現,這種方法一般在低檔小型機和微型機中採用。硬件方法則是在功能較強的機器中使用,有的以加法為核心,實現乘法運算的硬件組織,在速度快、功能強的大中型機器中,還專門設置了多位陣列乘法器部件,也就是說乘法運算完全是由硬件實現的。這一節主要討論硬件方法,即以加法器為核心來實現乘法運算,以及陣列乘法器件,討論乘法運算規則、算法流程及硬件實現。

計算機定點乘法運算,歸納起來有兩種方法

1.原碼一位乘法

由於原碼的數值部分與真值相同,所以考慮原碼一位乘法的運算規則和運算方法時,可以從手算中得到一些啟發。二進制乘法與十進制乘法十分相似,手算過程似乎比機器內部計算還要簡單一些。

例如:x=+0.1101,y=-0.1011,求x×y=?

計算機定點乘法運算,歸納起來有兩種方法

由於異號相乘,所以x×y=-0.10001111。

計算過程與十進制一樣,也是從乘數的最低位開始,一位一位地向左與被乘數相乘,乘積是由兩個因素決定的:乘積的數值和符號,對這兩個因素要分別處理。由此可以知道,從手算到機器實現,應該有以下幾個問題要解決:

(1)乘積的符號問題。對於原碼乘法來說,由於符號位與尾數是分別處理的,所以乘積的符號應是同號相乘為正,異號相乘為負,這個邏輯實現很容易。

假設被乘數x=xf.x1x2x3…xn,乘數y=yf.y1y2y3…yn,xf,yf分別是兩個操作數的符號,Sf是乘積結果的數符,那麼Sf=xf

計算機定點乘法運算,歸納起來有兩種方法

yf,即xf,yf相異時,Sf=1,為負;xf,yf相同時,Sf=0為正。

(2)位權對齊的問題。因為乘積的符號是單獨處理的,所以乘積的數值可以由被乘數與乘數的絕對值之積求得,即|S|=|X|×|Y|。

通過手算的計算過程,乘數從右向左每進一位,得到的部分積也會向左移一位,這時就需要更多位的寄存器來存儲乘法計算過程中得到的部分積。

計算機定點乘法運算,歸納起來有兩種方法

(3)乘數的位數問題。若干個部分積一起相加,比較困難,而且會出現有的部分積是0,卻仍要佔一個操作數的位置,由於機器中已有兩個操作數相加的加法器,故應充分利用已有的部件,將幾位乘法轉化為幾次累加、移位來實現。即從右向左每次處理一位乘數,每求得一個部分積,就立即累加,部分積的初值為0,累加後,部分積右移一位,等待新的部分積算出後,再累加,直到乘數最高位,累加後得最後結果。這樣將原來的部分積右移一位,就可以使原部分積中不需要累加的一位右移,而不參加加法運算,這樣也就不需要增加加法器的位數了。

計算機定點乘法運算,歸納起來有兩種方法


分享到:


相關文章: