XORとANDゲートで作る半加算器(Half Adder)
半加算器とは?
半加算器(Half Adder)は、**2つの1ビット入力(A, B)**を受け取り、**合計(Sum)とキャリー(Carry)**を出力する組み合わせ論理回路です。
例えば、2進数の 1 + 1 = 10
という計算を行うとき、下位ビットの合計が0で、繰り上がり(キャリー)が1になるという挙動を再現します。
このため、半加算器は2進数の基本的な加算処理を構成する上で非常に重要なブロックです。
論理式
半加算器は、入力AとBを基に以下の2つの出力を生成します。
-
Sum (S): ( S = A \oplus B )
XORゲートで実装します。2つの入力が異なるときのみ1になります。 -
Carry (C): ( C = A \cdot B )
ANDゲートで実装します。2つの入力が両方1のときにキャリーが発生します。
真理値表
A | B | Sum (A⊕B) | Carry (A·B) |
---|---|---|---|
0 | 0 | 0 | 0 |
0 | 1 | 1 | 0 |
1 | 0 | 1 | 0 |
1 | 1 | 0 | 1 |
この真理値表を見れば、XORゲートは「合計ビット(Sum)」、ANDゲートは「繰り上がり(Carry)」の役割を果たすことが分かります。
回路構成例
半加算器は、XORゲートとANDゲートを1つずつ使用するだけで実装可能です。
A ----->|XOR|----> Sum
\\
\----->|AND|----> Carry
/
B
- XORゲートはAとBが異なるとき1を出力し、これがSumになります。
- ANDゲートはAとBが両方1のときだけ1を出力し、これがCarryになります。
実際の使用例
半加算器単体では、キャリー入力(Cin)がないため多ビット加算ができません。
しかし、複数の半加算器を組み合わせることで、より複雑な加算器を作ることができます。
-
フル加算器(Full Adder)
半加算器を2つとORゲートを組み合わせることで、3つの入力(A, B, Cin)を扱うことが可能になります。 -
nビット加算器(Ripple Carry Adder)
フル加算器をn段階直列に接続することで、nビットの加算が行えます。
実装のポイント
- XORゲートは、排他的論理和の動きをするため、加算の下位ビットの結果に非常に適しています。
- ANDゲートは、両方が1のときキャリーを発生させるので、繰り上がりの条件を満たすのにピッタリです。
- 半加算器は、デジタル回路やプロセッサ内部で使われる加算回路の最小単位といえる存在です。
今後の拡張
次回は、半加算器を組み合わせてフル加算器を設計する方法を解説します。
フル加算器は、実際のCPUやALU(算術論理演算装置)でよく用いられる加算器の基本ユニットです。