技術(非IT系)

半加算器とは?仕組みをわかりやすく解説!(真理値表・XOR・AND・全加算器との違いなど)

半加算器の意味と基本構造
当サイトでは記事内に広告を含みます

半加算器は、コンピュータが行う二進数の足し算を理解するうえで欠かせない基本回路です。

入力は0と1の2種類だけですが、加算結果の一の位と桁上がりを別々に出力する仕組みには、デジタル回路の重要な考え方が凝縮されています。

この記事では、真理値表、XOR回路、AND回路、論理式、全加算器との違いまで、初学者にも流れがつかめるように解説します。

半加算器の意味と基本構造

半加算器の意味と基本構造

それではまず半加算器の意味と、回路が担う役割について解説していきます。

二進数の一桁を加算する論理回路

半加算器とは、二進数の1桁どうしを加算する組み合わせ論理回路です。

加算する入力は通常AとBで表し、それぞれ0または1を受け取ります。

計算結果は1つではなく、和を示すSと桁上がりを示すCの2つに分けて出力されます。

たとえば0と1を加えると答えは1なので、Sは1、Cは0となります。

一方で1と1を加えると、十進数では2です。

二進数の2は10と表すため、一の位にあたるSは0、次の桁へ渡すCは1になります。

このように、半加算器は単純な足し算を処理しながら、桁上がりという二進演算特有の情報も取り出します。

半加算器の出力は、加算結果の一の位であるSと、次の桁へ送る桁上がりであるCの2種類です。

半加算器という名称の由来

半加算器の「半」は、加算機能が不完全という意味ではありません。

2進数の複数桁計算で必要になる、前の桁から受け取る桁上がり入力を扱わない点に由来します。

下位桁の計算では、左側から桁上がりが入ってくることがありません。

そのため、最初の一桁だけを計算する用途であれば半加算器だけでも対応できます。

しかし2桁目以降では、AとBに加えて前段の桁上がりも考慮する必要があります。

そこで登場するのが全加算器です。

半加算器は全加算器を理解するための土台であり、CPUや演算装置の構造を学ぶ入口にもなります。

入力と出力の役割

半加算器には2本の入力線と2本の出力線があります。

入力Aと入力Bは、加算したい各ビットです。

出力SはSumの頭文字であり、二進数の和の下位ビットを意味します。

出力CはCarryの頭文字で、桁上がりを意味します。

記号 名称 役割
A 入力ビットA 加算する1つ目の二進数
B 入力ビットB 加算する2つ目の二進数
S Sum 加算結果の一の位
C Carry 次の桁へ渡す桁上がり

回路図では、AとBがXORゲートとANDゲートの両方へ入力される形が一般的です。

同じ2つの入力から異なる論理演算を行い、SとCを同時に作り出します。

真理値表による動作確認

続いては真理値表を使い、4通りの入力で何が起こるのかを確認していきます。

入力組み合わせの全パターン

二進数の入力は0または1なので、AとBの組み合わせは全部で4通りです。

真理値表は、各入力に対して出力がどう変わるかを一覧にした表です。

半加算器では、この4行だけで回路の振る舞いを完全に表現できます。

A B 十進数での加算 S C 二進数の結果
0 0 0+0 0 0 0
0 1 0+1 1 0 1
1 0 1+0 1 0 1
1 1 1+1 0 1 10

表の最後の行だけは、SとCを並べて読む必要があります。

AとBがともに1のとき、Sは0ですが、Cが1になるため、全体の結果は10です。

ここに桁上がりを独立した出力として扱う必要性があります。

和の出力が変化する条件

和Sは、AとBが異なる値であるときだけ1になります。

0と1、または1と0の組み合わせでSが1になる点が特徴です。

反対に0と0、1と1のときはSが0になります。

このパターンは排他的論理和、すなわちXORの真理値表と完全に一致します。

S=A XOR B

AとBが異なる場合はSが1となり、同じ場合はSが0となります。

二進数の足し算では、1と1を加えた場合に下位ビットが0へ戻ります。

XORはこの性質をそのまま論理演算として実現するゲートです。

桁上がりの出力が変化する条件

桁上がりCは、AとBがともに1のときだけ1になります。

これはAND演算の条件と同じです。

どちらか片方でも0なら、合計は1以下に収まるため、次の桁への繰り上がりは発生しません。

C=A AND B

2つの入力がともに1の場合だけ、CarryであるCが1となります。

真理値表を暗記するより、1+1が二進数で10になる場面を思い浮かべると理解しやすいでしょう。

下位桁の0がS、上位桁の1がCとして出力される構造です。

XORゲートとANDゲートの役割

続いては半加算器を構成するXORゲートとANDゲートの役割を確認していきます。

XORゲートが作る和のビット

XORはExclusive ORの略で、日本語では排他的論理和と呼ばれます。

OR回路は、どちらか一方または両方が1なら1を出力します。

これに対してXORは、両方が1の場合を除き、入力が片方だけ1のときに限って1を出力する論理です。

半加算器のSにXORを使う理由は、二進数の加算結果の下位桁がこの条件に一致するためです。

A B OR XOR
0 0 0 0
0 1 1 1
1 0 1 1
1 1 1 0

ORとXORの違いは、入力が1と1の場合に明確になります。

半加算器では1+1の下位桁を0にしなければならないため、ORではなくXORが必要です。

ANDゲートが検出する桁上がり

ANDゲートは、すべての入力が1のときだけ1を出力します。

半加算器においては、AとBがともに1である状態を検出する役割です。

1+1の結果が10となるため、このAND出力を次の桁へ渡せば、連続した加算回路を構成できます。

ANDは単なる条件判定の回路に見えるかもしれません。

しかし加算器の内部では、桁の重みを一つ上へ移す信号を作る重要な部品です。

XORは下位桁の和を作り、ANDは上位桁へ送る桁上がりを作ります。

半加算器はこの2種類の基本ゲートの組み合わせで実現できます。

論理式と回路図の読み方

半加算器の論理式は、S=A XOR B、C=A AND Bです。

回路図では、AとBの信号線が途中で分岐し、XORゲートとANDゲートのそれぞれへ接続されます。

XORゲートの出力端子がS、ANDゲートの出力端子がCです。

入力から出力までの途中に記憶装置やクロック信号はありません。

そのため半加算器は、現在の入力だけで出力が決まる組み合わせ回路に分類されます。

入力値が切り替われば、回路の伝搬遅延を経て出力も変化します。

実際の電子回路では、この遅延時間が高速演算の設計に影響します。

二進数計算における半加算器の例

続いては具体例を通じて、半加算器が二進数の計算にどう関わるかを確認していきます。

0と0を加算する場合

Aが0、Bが0なら、加算結果は0です。

このときXORの出力は0、ANDの出力も0となります。

つまりS=0、C=0です。

桁上がりがなく、下位桁にも1が立たない最も基本的な状態です。

電子回路として見ると、どちらの入力もLowレベルであり、出力もLowレベルに保たれます。

0と1または1と0を加算する場合

AとBの片方だけが1なら、加算結果は1です。

XORは入力が異なるため1を出力し、ANDは両方が1ではないため0を出力します。

0+1=1

S=1、C=0

1+0=1

S=1、C=0

この状態では、結果は現在の桁だけで完結します。

次の桁へ影響する信号が出ないため、上位ビット側の回路はCarryを受け取る必要がありません。

左右の入力順を入れ替えても同じ結果になる性質は、加算の交換法則に対応します。

1と1を加算する場合

半加算器で最も大切なのが、AとBがともに1のケースです。

十進数なら1+1=2ですが、二進数では2を10と表記します。

したがって現在の桁に残る値は0であり、次の桁には1が渡されます。

1+1=10という二進数の表現を、S=0とC=1に分解して扱うことが半加算器の本質です。

XORゲートは1と1に対して0を出力します。

ANDゲートは1と1に対して1を出力するため、2つの出力を左からC、Sの順に読めば10です。

Sだけを見て計算結果を0と判断しないことが、半加算器を扱う際の注意点でしょう。

Carryを含めて初めて、二進数の加算結果を正しく表せます。

全加算器との違いと接続方法

続いては半加算器と全加算器の違い、および複数桁の加算へ広げる方法を確認していきます。

桁上がり入力の有無

半加算器と全加算器の最大の違いは、入力の数です。

半加算器はAとBの2入力ですが、全加算器はA、B、前段からの桁上がりCinの3入力を受け取ります。

全加算器は3つのビットを合計し、和Sと次段への桁上がりCoutを出力します。

比較項目 半加算器 全加算器
入力数 2入力 3入力
入力信号 A、B A、B、Cin
桁上がり入力 扱わない 扱う
主な用途 最下位ビットの加算 中間桁や上位桁の加算
出力 S、C S、Cout

複数桁の二進数を加算するなら、2桁目以降には前段からCarryが届きます。

その信号を無視すると正しい答えにならないため、通常は全加算器が使われます。

半加算器二つから全加算器を作る構成

全加算器は、半加算器を2個とORゲートを1個使って構成できます。

最初の半加算器でAとBを加算し、中間和と中間Carryを作ります。

次の半加算器では、中間和とCinを加算します。

最後に、2つの半加算器から出たCarryをORゲートでまとめればCoutが得られます。

この構成は、基本ゲートと半加算器の役割を理解するうえで非常に良い例です。

小さな回路を組み合わせることで、より複雑な機能を実現する設計思想が見えてきます。

全加算器は半加算器の拡張として理解できる回路です。

複数桁加算器への発展

4ビットや8ビットの加算器では、各桁に全加算器を並べます。

最下位ビットでは桁上がり入力がないため、半加算器を使う設計も可能です。

ただし実用的な集積回路では、設計の統一性を優先して最下位桁にも全加算器を置く場合があります。

各段のCoutを次段のCinにつなぐ方式は、リップルキャリー加算器と呼ばれます。

Carryが下位桁から順番に伝わるため、ビット数が増えるほど処理完了までの時間が長くなる傾向があります。

高速な演算装置では、桁上がりを先回りして計算するキャリールックアヘッド加算器なども活用されます。

それでも、その出発点にあるのは半加算器で学ぶXOR、AND、Carryの考え方です。

半加算器を学ぶ際のポイント

続いては半加算器を学習や設計で扱う際に押さえたいポイントを確認していきます。

十進数ではなく二進数で考える視点

半加算器の理解では、普段使う十進数の感覚をいったん二進数へ置き換える必要があります。

二進数の各桁には0か1しか入らず、1+1が10になる点が最初の関門です。

1+1の結果を「2」と受け止めるだけでは、Sがなぜ0になるのか理解しにくいでしょう。

10という二進表記に分け、右の0をS、左の1をCと捉えると回路の役割が明確になります。

桁上がりは別の結果ではなく、加算結果を構成する上位ビットです。

真理値表から論理式へ進む順序

初めから論理式だけを見ると、XORやANDの記号に戸惑うことがあります。

まず4通りの入力を紙に書き、それぞれの加算結果を二進数で確かめる方法がおすすめです。

次にSの列だけを縦に見ると、入力が異なるときだけ1になることに気付けます。

これはXORです。

Cの列だけを見ると、両方が1のときだけ1になるため、ANDと判断できます。

真理値表から回路を導く流れを身に付ければ、より複雑な論理回路の設計にも応用できます。

シミュレーションと電子工作での確認

論理回路シミュレーターを使えば、XORゲートとANDゲートを配置し、入力スイッチとLEDを接続して動きを確認できます。

AとBを切り替えるたびにSとCのLEDがどう変化するかを見ると、真理値表の内容が直感的につかめます。

電子工作では、74シリーズなどのロジックICを利用して半加算器を組む方法もあります。

ただしICの電源電圧、GND接続、未使用入力の処理などには注意が必要です。

プログラミングで再現する場合も、XOR演算子や論理積を使えば同じ結果を得られます。

回路図、真理値表、プログラムの3つを行き来する学習によって、論理演算への理解が深まります。

半加算器のまとめ

半加算器は、二進数の1桁どうしを加算する基本的な組み合わせ論理回路です。

入力AとBから、下位桁の和Sと桁上がりCを出力します。

SはXORゲートで求められ、CはANDゲートで求められる構造です。

特に1+1=10となる場面では、S=0とC=1を合わせて結果を読むことが重要になります。

半加算器には前段からの桁上がり入力がないため、複数桁の計算では全加算器が必要です。

一方で、全加算器も半加算器の組み合わせで構成できるため、半加算器を理解すれば加算回路全体の仕組みが見えやすくなります。

真理値表からXORとANDの役割を読み取ることを意識しながら、二進数の足し算を繰り返し確認してみてください。