一位加減乘運算
一位十進位制加法運算
1.
8421碼加法運算
8421碼的加法規則:
⑴兩個十進位制數的8421碼相加時,按“逢二進一”的原則進行;
⑵當和≤9,無需校正;
⑶當和>9,則+6校正;
⑷在做+6校正的同時,將產生向上一位的進位。
1.一位8421碼加法器
校正函式=C4’+S4’S3’+S4’S2’
向上一位的進位C4=校正函式
一位8421碼加法器
定點乘法運算
一般來講,做乘除法運算,用原碼比用補碼簡單,但有的機器,資料是用補碼錶示的,為避免碼制間的頻繁轉換,乘除也用補碼來做。
一、原碼乘法
1。
原碼一位乘(原碼運算子號位要單獨處理)
•
用原碼運算,資料的符號不能同數值位一同參加運算,而需單獨處理,兩原碼錶示的數相乘,其結果的符號是兩數符號的異或。
手算乘法是透過移位和加法來實現的。計算機不能照搬的原因:
① n位乘法,需n個數相加得部分積,而全加器只有三個輸入端,故實現不了。
② n位乘法,乘積2n位,要用2n位的暫存器來存放積。
③ 若用加法器做加法,n位乘法,需2n位的加法器,造成硬體浪費。
我們想要:
① n位乘法,只用n位加法器,且只用兩數相加的加法器
② n位乘法,只用n位暫存器來存放結果
方法:(
n次加法, n次移位
)
•參加運算的運算元取其絕對值;
令乘數的最低位為判斷位,若為1,則加被乘數,若為0,則加0;
累加後的部分積以及乘數右移一位;
重複上述操作,直到乘數位全部乘完為止。
原碼乘法器
二、補碼乘法
1.補碼一位乘
被乘數x, [x]補=xs。x1…xn
乘數y, [y]補=ys。y1…yn
•
校正法
⑴ x任意,y>0時,
[X×Y]補 = [X]補× [Y]補
⑵ x任意,y<0時,
[X×Y]補 = [X]補× (0。y1…yn )+[-X]補
•
比較法--Booth乘法
補碼校正法雖可行,但是在乘數為負時校正控制比較複雜,實用性差。希望能有一個正負數操作一致的演算法,這就是比較法(又叫Booth法)。
設被乘數 [X]補 = Xs。X1X2…Xn 和乘數 [Y]補 = Ys。Y1Y2…Yn 均為任意符號,
=(Y1-Ys) ×[X]補+2 -1((Y2-Y1) ×[X]補 + 2-1((Y3-Y2) ×[X]補 +
2-1 ( … + 2-1 ((Yn+1-Yn) ×[X]補 +0) )))
將此式展開,得到遞推關係:
[Z0]補=0
[Z1]補=2-1{[Z0]補+(yn+1-yn)[x]補}
[Z2]補=2-1{[Z1]補+(yn-yn-1)[x]補}
。
。
[Zn]補=2-1{[Zn-1]補+(y2-y1)[x]補}
從而得到:
[x×y]補=[Zn]補+(y1-ys).[x]補
--------補碼一位乘比較法
⑴ 相乘時,參加運算的數用補碼錶示,符號位參與運算;被乘數取雙符號位,乘數取單符號位並參加運算。
⑵ 乘法開始前,部分積置全0,乘數末位增加附加位yn+1=0。
⑶ 比較yi
和yi+1,決定如何運算
yi yi+1
0 0 ;+全0,結果右移一位;
0 1 ;+[x]補,結果右移一位;
1 0 ;+[-x]補,結果右移一位;
1 1 ;+全0,結果右移一位。
⑷ 重複 n+1 次,最後一次不移位
⑸ 得乘積 2n+2位,其中含兩位符號位