補碼乘法因符號位參與運算,可以完成補碼數的“直接”乘法,而不需要求補級。這種直接的方法排除了較慢的對2求補操作,因而大大加速了乘法過程。
首先說明與直接的補碼乘法相聯系數學特征。對于計算補碼數的數值來說,一種較好的表示方法是使補碼的位置數由一個帶負權的符號和帶正權的系數。今考慮一個定點補碼整數[N] 補 =a n a n-1 …a 1 a 0 ,這里a n 是符號位。根據[N] 補 的符號,補碼數[N] 補 和真值N的關系可以表示成:
如果我們把負權因數-2
n
強加到符號位a
n
上,那么就可以把上述方程組中的兩個位置表達式合并成下面的統一形式:
[例19] 已知: [N
1
]
補
= (01101)
2
,[N
2
]
補
=(10011)
2
,求[N
1
]
補
,[N
2
]
補
具有的數值。
[解:]
[N
1
]
補
=(01101)
2
具有的數值為:
N
1
=-0×2
4
+1×2
3
+1×2
2
+0×2
1
+1×2
0
=(+13)
10
[N
2
]
補
=(10011)
2
具有的數值為:
N
2
=-1×2
4
+0×2
3
+0×2
2
+1×2
1
+1×2
0
=(-13)
10
2.一般化的全加器形式
常規的一位全加器可假定它的3個輸入和2個輸出都是正權。這種加法器通過把正權或負權加到輸入/輸出端,可以歸納出四類加法單元。如右表,0類全加器沒有負權輸入;1類全加器有1個負權輸入和2個正權輸入;依次類推。
對0類、3類全加器而言有:
S = XYZ + XYZ + XYZ + XYZ
C
=
XY
+
YZ
+
ZX
對1類、2類全加器,則有
S = XYZ + XYZ + XYZ + XYZ
C = XY + XZ + YZ
表2.3 四類一般化全加器的名稱和邏輯符號

注意,0類和3類全加器是用同一對邏輯方程來表征的,它和普通的一位全加器(0類)是一致的。這是因為3類全加器可以簡單地把0類全加器的所有輸入輸出值全部反向來得到,反之亦然。1類和2類全加器之間也能建立類似的關系。由于邏輯表達式具有兩級與一或形式,可以用“與或非”門來實現,延遲時間為2T。
3.直接補碼陣列乘法器
利用混合型的全加器就可以構成直接補碼數陣列乘法器。設被乘數A和乘數B是兩個5位的二進制補碼數,即
A=(a
4
)a
3
a
2
a
1
a
0
B=(b
4
)a
3
a
2
a
1
a
0
它們具有帶負權的符號位a
4
和b
4
,并用括號標注。如果我們用括號來標注負的被加項,例如(a
i
b
j
),那么A和B相乘過程中所包含的操作步驟如下面矩陣所示:
5位乘5位的直接補碼陣列乘法器邏輯原理。
其中使用不同的邏輯符號來代表0類、1類、2類、3類全加器。2類和1類全加器具有同樣的結構,但是使用不同的邏輯符號可使乘法陣列的線路圖容易理解。
在n位乘n位的一般情況下,該乘法器需要(n-2)
2
個0類全加器,(n-2)個1類全加器,(2n-3)個2類全加器,1個3類全加器,總共是n(n-1)個全加器。 故所需的總乘法時間是:
t
p
=Ta+2(n-1)Tf=2T+(2n-2)2T=(4n-2)T (2.31)
[例20] 設[A]
補
=(01101)
2
,[B]
補
=(11011)
2
,求[A×B]
補
=?
[解:]
驗證:
-1×27+0×26+1×25+1×24+1×23+1×22+1×21+1×20
=-128+(32+16+8+4+2+1)
=-65
(13)×(-5)=-65
PS:這里解釋的不大明白,個人覺得是因為補碼符號位的計算本來要進一個(1),但是因為補碼的進位要舍棄的關系(舍棄那位是本來借的更高位),所以不需要進,最后看一下,由于最高位是符號位,最后需要補上
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
