科学・計算関連

半加算回路の真理値表とは?和と桁上がりの求め方を解説!(半加算器・全加算器)

半加算回路の真理値表と計算結果
当サイトでは記事内に広告を含みます
技術ブログ特化メルマガはこちら

半加算回路は、2進数の足し算を理解するうえで欠かせない基本回路です。

入力が0と1だけで構成されるデジタル回路では、通常の十進数とは異なる桁上がりが発生します。

そこで重要になるのが、和を示す出力と桁上がりを示す出力を分けて考える方法です。

本記事では半加算器の真理値表を中心に、論理ゲート、全加算器との違い、回路設計での活用まで順を追って解説します。

半加算回路の真理値表と計算結果

半加算回路の真理値表と計算結果

それではまず半加算回路の真理値表と、和および桁上がりの基本的な関係について解説していきます。

半加算器における二つの入力信号

半加算器は、2ビットの入力を加算するための組み合わせ回路です。

入力信号は一般にAとBで表し、それぞれ0または1の値を取ります。

出力は二つあり、加算結果の下位ビットを示す和と、次の桁へ送る値を示す桁上がりです。

和はSumやS、桁上がりはCarryやCと記号で表されることが多く、回路図や論理式を読む際の基本用語になります。

たとえば0と1を加える場合、十進数でも2進数でも結果は1です。

一方で1と1を加えると、2進数では10となります。

このとき下位桁には0が残り、上位桁へ1が繰り上がります。

半加算器は、この1と1の加算に含まれる二つの結果を別々の出力として取り出す回路です。

2進数の基本的な加算では、0+0は0、0+1は1、1+0は1、1+1は10になります。

1+1の結果である10は、和が0、桁上がりが1という意味です。

半加算器という名称の半は、前の桁から受け取る桁上がり入力を扱わない点に由来します。

最下位ビットの加算では前段が存在しないため、半加算器だけで計算できる場面があります。

ただし複数桁の加算を行う場合は、途中の桁で前段からの桁上がりを加える必要があります。

その役割を担うのが後述する全加算器です。

真理値表で確認する和と桁上がり

論理回路の入出力関係は、すべての入力パターンを表にした真理値表で確認できます。

半加算器は入力がAとBの二つだけなので、組み合わせは全部で4通りです。

A B 和 S 桁上がり C 加算結果
0 0 0 0 0+0=0
0 1 1 0 0+1=1
1 0 1 0 1+0=1
1 1 0 1 1+1=10

表を見ると、和Sが1になるのはAとBの値が異なる場合だけです。

反対に桁上がりCが1になるのは、AとBがどちらも1の場合に限られます。

この規則を理解すると、半加算器の回路構成を暗記ではなく意味から判断できます。

特に1+1で和が0になる点は初学者が混乱しやすい部分でしょう。

しかし出力を一つの数値ではなく、下位桁と上位桁に分けて考えれば自然に理解できます。

半加算器の出力は二つで考えます。

和Sは現在の桁に残る値であり、桁上がりCは次の桁へ渡す値です。

結論となる論理式と回路構成

半加算器の和Sは、排他的論理和であるXORの出力と一致します。

AとBが異なるときだけ1になるため、XORゲートの性質と完全に重なります。

桁上がりCは、AとBがともに1のときだけ1になるため、ANDゲートの出力です。

半加算器の論理式は次のように表せます。

和S=A XOR B

桁上がりC=A AND B

つまり半加算器は、基本的にはXORゲート一つとANDゲート一つで実現できます。

この簡潔さが、半加算器をデジタル回路学習の入口として重要にしている理由です。

論理式を見たときは、XORが違いを検出し、ANDが両方の成立を検出すると捉えると分かりやすくなります。

和にはXOR、桁上がりにはANDという対応を押さえることが、真理値表を使った問題を解く近道です。

二進数加算における桁上がりの仕組み

続いては二進数加算における桁上がりの仕組みを確認していきます。

十進数と二進数の繰り上がり

十進数では、0から9までの十種類の数字を使います。

そのため9に1を加えると10になり、次の桁へ1が繰り上がります。

二進数では使える数字が0と1だけです。

したがって1に1を加えた時点で桁があふれ、10という表現になります。

二進数の10は十進数の2に相当します。

ここで重要なのは、10を十という数と読まないことです。

デジタル回路では各桁がビットとして扱われ、右端から順番に計算処理が進みます。

1+1が10になるという規則は、加算器の動作だけでなく、コンピュータ内部の演算全体に関係します。

たとえば2進数の11と01を加える場面を考えてみましょう。

右端では1+1を計算するため、和は0、桁上がりは1です。

次に左側では1+0に、右端から来た桁上がりの1を加えます。

結果は10となるため、最終的な計算結果は100になります。

十進数に直すと3+1=4であり、結果が一致します。

半加算器だけでは不足する場面

半加算器は二つの入力だけを加える回路なので、前の桁から届く桁上がりを入力にできません。

最下位ビットでは問題ありませんが、それより上位のビットでは条件が足りなくなります。

複数桁の加算では、各桁にAとBだけでなく、前段のCarry Inも加える必要があります。

このCarry Inを考慮しないまま計算すると、本来は繰り上がるべき値を見落としてしまいます。

対象となる桁 必要な入力 利用する加算器
最下位ビット AとB 半加算器
途中のビット A、B、前段の桁上がり 全加算器
最上位ビット A、B、前段の桁上がり 全加算器

半加算器は単独で見ると小さな回路ですが、全加算器の構成要素としても活躍します。

二つの半加算器を段階的に組み合わせることで、三つの入力を扱える全加算器を設計できます。

このつながりを知ると、基本回路と応用回路の関係が見えやすくなるでしょう。

桁上がり信号の伝達経路

複数ビットの加算器では、ある桁で発生した桁上がりが次の桁へ伝わります。

この流れはキャリー伝搬と呼ばれます。

もっとも単純な構成では、下位ビットから上位ビットへ順にCarryが渡されます。

この方式はリップルキャリー加算器と呼ばれ、波紋が広がるように信号が伝わるイメージです。

ただし桁数が増えるほど、下位からのCarryを待つ時間が長くなります。

演算速度が重要なプロセッサでは、この待ち時間を減らすための高速な加算回路も用いられます。

とはいえ、基本的な仕組みを理解するためには、まず半加算器と全加算器による順番の伝達を押さえることが大切です。

桁上がりは単なる補助情報ではありません。

複数桁の演算では、次の桁の計算結果を左右する入力信号になります。

半加算器を構成する論理ゲート

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

ANDゲートによる桁上がり判定

ANDゲートは、複数の入力がすべて1であるときにだけ出力を1にする論理ゲートです。

半加算器では、この性質を使って桁上がりを判定します。

Aが1でBも1なら、1+1の計算が成立し、次の桁へ1を送る必要があります。

AまたはBのどちらかが0なら、加算結果は1以下であり、桁上がりは生じません。

したがってCarry出力にはANDゲートが適しています。

回路図でAとBがANDゲートに入力され、その出力がCへ接続されていれば、桁上がり回路だと判断できます。

ANDは両方が1かどうかを調べるゲートとして覚えると、論理式と真理値表を結び付けやすくなります。

XORゲートによる和の判定

XORゲートは排他的論理和ゲートとも呼ばれます。

二つの入力が異なるときに1を出力し、同じときに0を出力する特徴があります。

半加算器の和は、AとBの一方だけが1であるときに1になります。

AとBがともに0なら和は0であり、ともに1なら桁上がりが発生して現在の桁の和は0です。

このためXORゲートの出力が、そのままSum出力になります。

ORゲートと混同しやすい点には注意が必要です。

ORゲートは入力のどちらか一方または両方が1なら出力が1になります。

1と1を加えたときの和を表すには、両方が1のケースで0を返すXORが必要です。

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

XORの最終行が0になることが、半加算器の和を求めるうえで最も重要な点です。

真理値表を見ながら各ゲートの出力を比べると、役割の違いが明確になります。

NOTゲートと基本ゲートによる実装

実際の電子回路では、XORゲートを部品として利用できる場合もあれば、AND、OR、NOTだけで構成する場合もあります。

NOTゲートは入力を反転させるため、0を1に、1を0に変換します。

XORは、AとBが異なる二つの条件をORで結合したものと考えられます。

XORは基本ゲートを使って次のように表せます。

A XOR B=A AND NOT B OR NOT A AND B

片方だけが1である二つの条件をまとめた式です。

この式は、論理回路の簡略化や部品制約のある設計で役立ちます。

また、論理式を真理値表へ変換する練習にも向いています。

入力の全パターンに対してNOT、AND、ORの順に値を確認すれば、XORと同じ出力になることを確かめられます。

半加算器は小規模な回路でありながら、論理代数、ブール代数、ゲート回路の基礎が詰まった題材です。

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

続いては半加算器と全加算器の違い、および実際の接続方法を確認していきます。

全加算器が扱う三つの入力

全加算器は、AとBに加えて前段からの桁上がりであるCarry Inを入力として扱います。

入力が三つになるため、組み合わせは8通りです。

出力は半加算器と同じく、和Sと次段への桁上がりCarry Outの二つです。

全加算器は複数桁の2進数を加算するために必要であり、CPUの算術論理演算装置でも基本となる考え方です。

Carry InをCinと書く場合、全加算器の和はA、B、Cinのうち1の個数が奇数のときに1になります。

つまりXORを三つの入力へ拡張した関係です。

一方Carry Outは、三つの入力のうち少なくとも二つが1のときに1になります。

A B Cin 和 S Carry Out
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1

最終行では1が三つ入力されます。

十進数では3に相当し、2進数では11になるため、和とCarry Outはともに1です。

この結果を追うと、三入力の加算が二つの出力へ整理される意味を理解しやすくなります。

二つの半加算器による全加算器の構成

全加算器は二つの半加算器と一つのORゲートで構成できます。

まず一つ目の半加算器でAとBを加算し、中間的な和と桁上がりを出力します。

次に二つ目の半加算器で、その中間の和とCinを加算します。

二つの半加算器から発生した桁上がりをORゲートへ入力し、最終的なCarry Outを得ます。

全加算器は、半加算器を二段にした構成で理解できます。

前半でAとBを加え、後半でCinを加え、二つの桁上がりをORでまとめます。

この構成は、複雑な回路が単純な回路の組み合わせで作られていることを示す代表例です。

回路設計の問題では、全加算器を半加算器へ分解して考えると、信号の流れを追いやすくなります。

また、各段でどの信号が和でどの信号がCarryなのかを明確に書くことも重要です。

複数ビット加算器への展開

4ビットや8ビットなど、複数桁の2進数を加算する回路では、最下位ビットに半加算器またはCinが0の全加算器を置きます。

それより上の桁には全加算器を並べ、前段のCarry Outを次段のCinへ接続します。

この直列接続により、各桁の加算結果と桁上がりが順番に処理されます。

4ビット加算器なら、最下位から4段の計算が行われ、最後に出るCarry Outは演算結果の5桁目になります。

符号なし整数の演算では、この最終Carryがオーバーフローの確認材料になる場合もあります。

ただし符号付き整数では判断方法が異なるため、符号ビットを含む演算では別の条件を確認する必要があります。

半加算器は一桁の基本、全加算器は複数桁の実用回路と整理すると、両者の役割を区別できます。

真理値表を使った半加算回路の解き方

続いては真理値表を使った半加算回路の解き方と、学習時に押さえたい確認方法を解説していきます。

入力パターンを漏れなく並べる方法

真理値表を作るときは、入力の組み合わせを漏れなく並べることが基本です。

入力が二つなら、00、01、10、11の順に書くと整理しやすくなります。

入力が三つなら、000から111までの8通りを順番に並べます。

ビット数が増えるごとに組み合わせは2倍になります。

入力数がn個なら、真理値表に必要な行数は2のn乗です。

半加算器の場合は2の2乗で4行、全加算器の場合は2の3乗で8行となります。

この規則を知っておくと、問題文に出てくる回路の検証範囲をすぐに判断できます。

表を作成するときは、最初に入力だけを並べます。

次に和と桁上がりを一列ずつ埋めると、途中で混乱しにくくなります。

加算結果を横にメモし、それを下位ビットと上位ビットへ分ける方法も有効です。

たとえば1+1なら10なので、Sは0、Cは1と書き込みます。

論理式から出力を求める手順

論理式が与えられた場合は、各入力パターンを式に代入して出力を求めます。

半加算器では、S=A XOR B、C=A AND Bを使います。

Aが0でBが1なら、XORの出力は1、ANDの出力は0です。

Aが1でBが1なら、XORの出力は0、ANDの出力は1になります。

このように一行ずつ確認すれば、真理値表を確実に完成できます。

A=1、B=1の場合を考えます。

S=1 XOR 1=0

C=1 AND 1=1

よって出力は和が0、桁上がりが1です。

式の順序や記号が不安な場合は、ゲートの働きに戻って確認するとよいでしょう。

XORは違えば1、ANDは両方1なら1という性質を使えば、計算器を使わずに判断できます。

論理式と真理値表は同じ動作を別の形で表したものです。

どちらか一方だけで覚えるのではなく、相互に変換できるようになると理解が深まります。

よくある混同と確認のポイント

半加算器の問題で多い誤りは、和と桁上がりを一つの値として扱ってしまうことです。

1+1の結果を2と考えること自体は正しいものの、回路出力では2という単独の数字を出すわけではありません。

和0とCarry1の二本の信号として出力される点が重要です。

次に多いのは、和のゲートをORと考える誤りです。

ORは1と1でも1を出力するため、半加算器の和には使えません。

1と1で和が0になることを確認すれば、XORを選ぶ理由が明確になります。

さらに、半加算器と全加算器の入力数を取り違えるケースもあります。

前段の桁上がりがあるかどうかを最初に確認すると、どちらを使うべきか判断できます。

確認項目 半加算器 全加算器
入力数 2 3
入力信号 A、B A、B、Cin
和の考え方 AとBのXOR A、B、CinのXOR
主な用途 最下位桁や基本学習 複数桁の加算

問題を解き終えたら、各行の加算結果を実際に2進数として読み直すと検算になります。

特に1+1、さらに全加算器では1+1+1の行を確認すれば、出力の理解度を確かめやすいでしょう。

半加算回路の真理値表のまとめ

半加算回路は、二つの1ビット入力を加算し、和と桁上がりを別々に出力する基本的な論理回路です。

真理値表ではAとBの4通りの入力を確認し、和Sと桁上がりCの関係を整理します。

和は入力が異なるときに1となるためXORゲートで求められ、桁上がりは両方が1のときだけ発生するためANDゲートで求められます。

S=A XOR B、C=A AND Bという論理式は、半加算器の中心となる知識です。

1+1の結果は2進数で10となり、現在の桁の和が0、次の桁への桁上がりが1になります。

この分離を理解することが、真理値表を正しく読む第一歩です。

複数桁の加算では前段からのCarry Inが必要になるため、半加算器を組み合わせた全加算器を利用します。

半加算器、全加算器、論理ゲート、キャリー伝搬の関係を順に押さえれば、デジタル回路の計算処理を無理なく理解できるでしょう。