デジタル回路の乗算器・除算器の仕組みをわかりやすく解説

前回の連載コラムでは、デジタル回路の加算器と減算器について説明しましたが、今回は「乗算」と「除算」について解説します。
2進数の乗算や除算は、基本的に加算器や減算器を組み合わせることで実現できます。
ここでは、デジタル回路で構成される乗算器と除算器の基本的な仕組みについて説明していきます。
目次
1.乗算器の仕組みと回路図
デジタル回路における乗算器は、2進数の乗算を基本として構成されています。
まずは、2進数乗算の考え方とその基本原理について見ていきましょう。
(1)2進数乗算の基本原理
まず、乗算の例を考えてみましょう。
2進数の乗算には、次の4パターンがあります。

結果は、ANDゲートを通した結果と同じになります。
ここで、2進数の1101×1010を計算してみると(10進数では、13×10)、次のようになります。

このように筆算と同様に部分積を1ビットずつ左にシフトしながら加算することで、乗算を行うことができます。
(2)乗算器の回路構成と特徴
2進数の乗算を部分積の加算として表現すると、図1に示すような乗算器の回路構成になります。
乗算は、ANDにより各桁の部分的な積を求め、それらを加算するために並列加算器(FA:Full Adder)を1ビットずつ左にずらして配置しています。
この方式では、乗算時間は高速ですが、積の加算回数に応じた数の並列加算器が必要となるため、乗算ビット数が増えると回路規模が大きくなるという欠点もあります。
図1は、4ビットの2進数の被乗数A(A3、A2、A1、A0)に乗数B(B3、B2、B1、B0)を掛けた結果の積Z(Z7、Z6、Z5、Z4、Z3、Z2、Z1、Z0)を求める乗算器になります。

【図1 乗算器の回路図】
2.除算器の仕組みと考え方
論理回路を使って除算を行う方法は、小学校で習った筆算で除算を行うのと同様に考えることができます。
(1)筆算による除算と基本的な考え方
まず、10進数の除算を思い出してみましょう。
例えば、152÷11を計算してみると、次のようになります。

このように筆算で計算し、152÷11=13 余9 となります。
ここでのポイントは、「除数を引けるかどうか」の判定です。
この例では、被除数の上位2桁から除数が引けるので上記のようになりますが、引けない場合はさらに下位の桁を含めて計算する必要があります。
(2)2進数除算の処理手順と商の決定
2進数も同様に考えられます。
例えば、2進数 10101110÷1011 を計算してみます。
まず、被除数の上位4桁の 1010 と、除数の 1011 を比較します。
1010 から 1011 は引けないので(もし引くと答えは負になってしまう)、商に0を置きます。
次に被除数をもう一桁増やして、10101 から 1011 が引けるかを考えます。
結果は、引けるので、商に1を置き、10101-1011 を計算します。
以下、同様の手順で最下位桁まで計算します。
すると、10101110÷1011=1111 余1001 となります。
10進数では、174÷11=15 余9 となります。
(3)回復法による除算と回路実装
このように、除算は、基本的には、減算をしていけばよいのですが、論理回路では、実際に減算を行ってみて、その結果が正か負かで引けるかどうかを判定することが必要です。
そして、減算結果が正になれば商に1を置き、負になれば商に0を置きます。
減算結果が正か負かは、減算結果の最上位ビット(符号ビット)を見て判断します。最上位ビットが0なら正、1なら負となります。
この方法は、計算の途中で減算結果が負になったときに、値を元に戻すことから「回復法(Restoring Division)」と呼ばれています。
除算回路は、減算を繰り返し、判定して結果を振り分け、桁シフトが必要になってくるので、除算回路を構成しようとすると非常に複雑になってしまいます。(ここでは、回路図は割愛します。)
そのため、実際のシステムでは、除算は専用ハードウェアではなく、ソフトウェア的なアルゴリズムとして実装されることが多いのが一般的です。
デジタル回路の乗算や除算は、一見すると複雑に見えますが、その基本は加算と減算の繰り返しにあります。
演算回路の仕組みを理解することは、CPUや演算装置の設計思想を知るうえで重要なポイントとなります。
(日本アイアール株式会社 特許調査部 E・N)



](https://engineer-education.com/wp/wp-content/uploads/2021/10/electric-circuit-dc0-150x150.png)
](https://engineer-education.com/wp/wp-content/uploads/2022/08/elearning_AC-circuit1_0-150x150.png)
](https://engineer-education.com/wp/wp-content/uploads/2022/08/elearning_AC-circuit_0-150x150.png)
































