符号付き乗算(Baugh-Wooley)
新入社員のとき最初の仕事が乗算器の回路設計だった。今は、乗算器なんてFPGAに専用ハードウェアが備わっていて論理合成できるので、自分で設計する人はいないと思うが、前々項で示した2の補数の式を使った計算例として紹介する。以下の計算はBaugh-Wooleyのアルゴリズムとして知られており、「Computer Arithmetic」(Hwang)によっている。
◇
(n+1)ビットと(m+1)ビットの符号付き乗算を式で書くと
ここで第2項、第3項が引き算になっているので、これを足し算に直したい。そのため、
を使って第2項、第3項を書き換えると
ここで、まだ第1項に引き算があるので足し算に直すため
を使って書き換えると、結局、次式が得られる。
例えば5ビット(n=4)と3ビット(m=2)の乗算は次のようになる。
a4 a3 a2 a1 a0 *) b2 b1 b0 ----------------------------------- a4・~b0 a3・b0 a2・b0 a1・b0 a0・b0 a4・~b1 a3・b1 a2・b1 a1・b1 a0・b1 ~a3・b2 ~a2・b2 ~a1・b2 ~a0・b2 ~a4・~a2 a4 b2 -1 1 --------------------------------------------------- p7 p6 p5 p4 p3 p2 p1 p0 |