第12章では、論理ゲートを組み合わせて、2進数のたし算をする2進数加算器を作る方法を紹介します!論理ゲートについては第11章で詳しく解説したので、よろしければご覧ください。
2進数のたし算はとてもシンプルです。
- 0足す0は0
- 0足す1は1
- 1足す0は1
- 1足す1は0、繰り上げ1
の4種類です。表にすると↓のようになります。
こうして、1桁目のサムビット(和ビット)と2桁目のキャリービット(繰り上げビット)からなるビットのペアが得られました。それぞれの表は↓です。
2つの2進数のたし算は、10進数のように右から1桁ずつ足していきます。
0 1 1 0 0 1 0 1
+ 1 0 1 1 0 1 1 0
1 0 0 0 1 1 0 1 1
この例では、3、6、7、8桁目で隣の桁への繰り上がりが起きています。繰り上がりは3つの2進数を加えます。さて、そろそろ2進数加算器を設計していきましょう!
まずは外部設計です。2進数加算器のコントロールパネルの外観は次のようなものです。
これらの8個ずつ2列のスイッチは入力デバイスです。上がオン(1)で、下がオフ(0)を意味します。下部の電球は出力デバイスです。点灯すれば1、点灯しなければ0を意味します。図は先の例で実行した結果を示しています。
次に内部設計です。キャリービットは先の表から ANDゲートで実現できそうですが、問題はサムビットです。第11章で紹介した4つのゲートでは実現できませんが、次のように、いくつかのゲートを組み合わせることで実現できます。
この回路はよく使われるので、XORゲートという名前が付いています。
よって、2進入力AとBは、次のような回路で加算されます。
複数桁の加算では、この回路を複数使うので、簡単のため次のようなボックスで表現します。このボックスを半加算器といいます。
ちなみに、僕は基本情報技術者試験に合格していますが、半加算器はよく試験に出てきたイメージです笑
さて、先の例でも見たように、繰り上がり(キャリーイン)の場合は3つの2進数を加える必要があります。これは、↓の回路で実現できます。
これもよく使われるので、ボックスで表現します。このボックスは全加算器といいます。
この全加算器を組み合わせることにより、複数桁の加算ができます。次の図では、各キャリーアウトが次のキャリーインになっています。
それぞれのAとBにスイッチをつなぎます。また、それぞれのサムアウトと最後のキャリーアウトに電球をつなぎ、最初のキャリーインを接地すれば、外部設計の要件を満たすことができます。
これで8ビットの2進数加算器が完成しました!次の図は、8ビット加算器全体を一つのボックスとして描いたものです。
これを複数つなげば、より多くの桁の2進数加算器を作ることも可能です。では引き算はどうすればいいのか、それは第13章で解説します!