【計算機組成原理】乘法運算總結


計算機中實現乘法運算有兩種方式, 使用原碼實現和使用補碼實現.

使用原碼並行乘法

使用原碼事項乘法的方式, 類似於筆算乘法, 符號位使用異或電路實現.

運算過程: 加法 + 移位

有成熟的末位決定被乘數是否與原部分積相加, 部分積右移移位形成新的部分積. 部分積 就是被乘數乘以乘數積的其中一行.

定義公式:
[x]=x0.x1 x2xn[x]=x0.x1 x2xn[xy]=(x0y0)+(x1x2xn)(y1y2yn) [x]_原 = x_0.x_1\ x_2\dots x_n \\ [x]_原 = x_0.x_1\ x_2\dots x_n \\ \therefore [x\cdot y]_原 = (x_0 \oplus y_0)+(x_1 x_2\dots x_n)\cdot (y_1 y_2\dots y_n)

例1: $A = -0.1101 \quad B=0.1011 $

直接算: A×B=0.10001111\Rightarrow A \times B=-0.10001111

根據公式計算:

[A]=1.1101[B]=0.1011[A]_原 = 1.1101 \quad [B]_原=0.1011

[xy]=(10)+(0.10001111)=[1.10001111]=0.10001111[x \cdot y]_原 = (1 \oplus 0)+ (0.10001111)= [1.10001111]_原 = -0.10001111


移位操作

  • 邏輯左移(LSL)和邏輯右移(LSR): bit位向左右移, 空出來的使用0補全
  • 算術左移(ASL)和算術右移(ASR): 算術左移同邏輯左移; 算術右移, bit位向右移, 空出來的使用符號位補全

第一類移動是將bit位簡單移動, 不考慮計算因素, 第二類是在計算中的移位, 在補碼運算中意義重大.

正、負數補碼(算術)右移的意義

  • 正數右移相當於對被操作數進行整除
  • 負數右移也是對被操作數進行整除, 需要注意: 如果有餘數, 結果-1; 負數整除最大值爲-1;

定點小數真值和補碼的另一關係

[X]=X0.X1X2Xn[X]_補 = X_0.X_1X_2\dots X_n

[X]=X0+0.X1X2Xn[X]_原 = -X_0 + 0.X_1X_2\dots X_n

例:

[1.11]=1+0.11=1+0.11=[0.01][1.11]_補 = -1 + 0.11 = -1 + 0.11 = [-0.01]_真

[1.1]=1+0.1=[0.1][1.1]_補 = -1 + 0.1 = [-0.1]_真


補碼乘法規則

設被乘數 [x]=x0.x1x2xn[x]_補 = x_0.x_1 x_2 \dots x_n , 乘數 [y]=y0.y1y2yn[y]_補= y_0.y_1 y_2 \dots y_n

  • 若被乘數任意, 乘數爲正
    • 同原碼乘法規則, 但加法移位操作按補碼規則運算
    • 乘積的符號自然形成
    • 公式爲: [xy]=[x](0.y1y2yn)[x \cdot y]_補 = [x]_補 (0.y_1 y_2 \dots y_n) --無需校正
  • 拖被乘數任意, 乘數爲負
    • 乘數 [y][y]_補 , 去掉符號位, 操作同上
    • 運算完成後, 需對結果加 [x][-x]_補 校正
    • 公式爲: [xy]=[x](0.y1y2yn)+[x][x \cdot y]_補 = [x]_補 (0.y_1 y_2 \dots y_n) + [-x]_補

**統一補碼乘法公式: ** [xy]=[x](0.y1y2yn)+[x]y0[x\cdot y]_補 = [x]_補 (0.y_1 y_2 \dots y_n) + [-x]_補\cdot y_0


Booth算法

運算規則

  • 符號位參與運算, 運算數均以補碼錶示
  • 被乘數一般去雙符號位參與運算
  • 乘數可取單符號位
  • 乘數末位增設附加爲Yn+1Y_{n+1} , 切初值爲0
  • 操作按下表
  • 最後一步無需移位
YnY_n Yn+1Y_{n+1} 操作
0 0 部分積右移移位
0 1 部分積加 [x][x]_補 , 右移一位
1 0 部分積加 [x][-x]_補 , 右移一位
1 1 部分積右移一位

運算過程
在這裏插入圖片描述

Booth運算電路邏輯圖
在這裏插入圖片描述

總結

計算集中乘法是通過加法實現的, 這裏的加法不是簡答的累加(例 4*5, 不是把4累加5次), 而是通過移位相加的方式, 通過計算機Booth算法進行乘法運算時最多相加次數爲除數位數減1次.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章