全加算機は、コンピューターや電子回路で複数桁の2進数を加算するために欠かせない論理回路です。
フルアダーとも呼ばれ、3つの入力から和と桁上がりを出力する仕組みを持ちます。
真理値表を読むと、入力ビットの組み合わせによって出力がどう変化するかを整理でき、2ビット加算器や多ビット加算器の動作も理解しやすくなるでしょう。
この記事では、全加算機の真理値表と論理式の基本を押さえながら、半加算機との違い、2ビット加算器への応用、回路設計で確認したいポイントまで順番に解説します。
全加算機の真理値表

それではまず全加算機の真理値表について解説していきます。
全加算機における3つの入力信号
全加算機には、加算する2つの入力であるAとB、そして下位桁から受け取る桁上がり入力Cinの3種類があります。
AとBだけであれば半加算機でも処理できますが、複数桁の計算では前の桁から発生した桁上がりも足さなければなりません。
このCinを扱える点が、全加算機と半加算機の大きな違いです。
出力は、計算結果の下位ビットを示すSと、次の桁へ送る桁上がり出力Coutの2つに分かれます。
つまり全加算機は、A、B、Cinの合計を2進数で表し、下位桁をS、上位桁をCoutとして取り出す回路と考えられます。
A、B、Cinがすべて0なら合計は0となり、SとCoutも0です。
3つの入力のうち1つだけが1なら合計は1となり、Sは1、Coutは0になります。
入力のうち2つが1なら合計は2であり、2進数では10となるため、Sは0、Coutは1です。
真理値表における入力と出力の対応
入力が3つあるため、全加算機の真理値表には2の3乗である8通りの組み合わせがあります。
それぞれを10進数の加算として考えると、出力の意味を直感的につかめるでしょう。
| A | B | Cin | 合計 | S | Cout |
|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 1 | 1 | 0 |
| 0 | 1 | 0 | 1 | 1 | 0 |
| 0 | 1 | 1 | 2 | 0 | 1 |
| 1 | 0 | 0 | 1 | 1 | 0 |
| 1 | 0 | 1 | 2 | 0 | 1 |
| 1 | 1 | 0 | 2 | 0 | 1 |
| 1 | 1 | 1 | 3 | 1 | 1 |
表を見ると、Sは入力に含まれる1の個数が奇数のときに1となることがわかります。
一方でCoutは、3つの入力のうち2つ以上が1になったときに1となります。
この2つの規則を理解すれば、真理値表を丸暗記しなくても出力を導けるようになります。
和と桁上がりの出力規則
SはSumの頭文字で、加算結果の最下位ビットを表します。
3つの入力を加算した結果が0または2ならSは0となり、結果が1または3ならSは1です。
これは排他的論理和であるXORの性質と一致します。
CoutはCarry outの略で、加算結果の上位ビットに相当します。
たとえばAが1、Bが1、Cinが0の場合、合計は2です。
2進数の2は10なので、現在の桁に置くSは0、次の桁へ渡すCoutは1となります。
全加算機の真理値表では、Sは3入力XOR、Coutは多数決のような出力と捉えると理解しやすくなります。
特にCoutは、3つの入力のうち2つ以上が1なら1になる点を押さえておきましょう。
半加算機と全加算機の違い
続いては半加算機と全加算機の違いを確認していきます。
半加算機における入力数
半加算機は、2つの1ビット入力AとBを加算する基本的な論理回路です。
出力は全加算機と同じく和Sと桁上がりCですが、下位桁から届く桁上がり入力を受け取れません。
そのため、単純な1ビット加算には使えても、複数桁の2進数を連続して計算する用途には単独で対応しにくい特徴があります。
半加算機では、AとBがともに1の場合だけ桁上がりが発生します。
入力が2つだけなので真理値表は4通りとなり、全加算機の8通りよりもシンプルです。
全加算機における桁上がり入力
多桁の加算では、右側の桁で発生した桁上がりを左側の桁へ渡す必要があります。
全加算機はCinを入力として持つため、この桁上がりをそのまま次の演算に含められます。
複数の全加算機を横につなげることで、多桁の2進数加算器を構成できるわけです。
最下位桁では下位からの桁上がりが存在しないため、Cinを0に固定します。
それより上の桁では、ひとつ右側の全加算機が出力したCoutをCinへ接続します。
この接続によって、筆算と同じように右から左へ桁上がりが伝わります。
| 比較項目 | 半加算機 | 全加算機 |
|---|---|---|
| 入力数 | 2つ | 3つ |
| 入力信号 | A、B | A、B、Cin |
| 出力信号 | S、C | S、Cout |
| 桁上がり入力 | 扱えない | 扱える |
| 多桁加算への利用 | 単独では限定的 | 連結して利用可能 |
| 真理値表の組み合わせ | 4通り | 8通り |
回路構成における利用場面
半加算機は、論理回路の基礎を学ぶ場面や、桁上がり入力を必要としない限定的な回路で利用されます。
対して全加算機は、CPUの演算回路、マイクロコントローラー、デジタル回路、FPGA設計などで広く使われる考え方です。
実際の集積回路では、多数の全加算機を組み合わせた加算器が演算装置の一部として実装されています。
なお全加算機は、2つの半加算機とORゲートを組み合わせて作ることも可能です。
まずAとBを半加算機で加算し、その和にCinを加えます。
2回の加算で発生する桁上がりをORゲートに入力すれば、最終的なCoutを得られます。
全加算機の論理式
続いては全加算機の論理式を確認していきます。
和を表すXOR演算
全加算機の和Sは、A、B、Cinの排他的論理和として表現できます。
論理式では、SはA XOR B XOR Cinとなります。
XORは、入力された1の個数が奇数のときに1を出力する論理演算です。
全加算機の真理値表でSが1となる行を見ると、1の個数が1個または3個であることを確認できます。
この規則により、Sの出力はXORゲートを使って効率よく構成できます。
S = A XOR B XOR Cin
入力に含まれる1の数が奇数ならSは1です。
入力に含まれる1の数が偶数ならSは0です。
桁上がりを表すANDとOR演算
Coutは、AとB、AとCin、BとCinのいずれか2つが同時に1になったときに1です。
そのため論理式では、CoutはAB OR ACin OR BCinと表せます。
ここで並んだ文字はAND演算を意味し、ORは複数条件のいずれかが成立することを表します。
AとBがともに1なら桁上がりが発生し、AとCinがともに1の場合も同じです。
さらにBとCinがともに1の場合も、合計が2以上になるためCoutは1になります。
Cout = AB OR ACin OR BCin
3つの組み合わせのうち、少なくとも1つのAND条件が成立すればCoutは1です。
入力のうち2つ以上が1という真理値表の規則を、論理式として表した形です。
論理ゲートによる回路実装
論理式を回路図に置き換えると、SにはXORゲート、CoutにはANDゲートとORゲートを使う構成が見えてきます。
ただし、個別のゲートを多く使うより、半加算機を組み合わせた構成のほうが理解しやすい場合もあります。
最初の半加算機でAとBを処理し、その和とCinを2つ目の半加算機へ入力します。
それぞれの半加算機から出る桁上がりをORゲートでまとめれば、Coutが完成します。
論理式と真理値表を往復して確認する習慣を持つと、回路図を見たときの理解も深まるでしょう。
SとCoutは別の規則で決まります。
Sだけ、あるいはCoutだけを確認して安心せず、すべての入力パターンで2つの出力を照合することが大切です。
2ビット加算器の構成
続いては2ビット加算器の構成を確認していきます。
最下位ビットにおける加算処理
2ビット加算器では、2桁の2進数どうしを加算します。
たとえばA1A0とB1B0を加算する場合、右端のA0とB0が最下位ビットです。
最下位ビットには下位桁がないため、Cinは0として処理します。
A0とB0の加算結果はS0となり、発生したCoutは上位ビットへ渡されます。
この最下位ビットは半加算機で作ることもできますが、回路の統一性を考えて全加算機を使う設計もあります。
上位ビットへの桁上がり伝搬
次に、A1とB1を上位桁として加算します。
ここでは右端の加算で発生した桁上がりがCinとして入力されます。
したがって上位ビットには全加算機が必要です。
上位全加算機のSがS1となり、Coutは2ビット加算器全体の最終桁上がりとして出力されます。
最終Coutが1なら、加算結果は3ビットで表現されることになります。
| 処理する桁 | 入力A | 入力B | Cin | 出力S | 出力Cout |
|---|---|---|---|---|---|
| 最下位ビット | A0 | B0 | 0 | S0 | 上位ビットへ接続 |
| 上位ビット | A1 | B1 | 下位ビットのCout | S1 | 最終桁上がり |
このように、下位桁のCoutを上位桁のCinへ接続する方法は、桁上がり伝搬型加算器と呼ばれます。
基本的な構成であり、全加算機の役割を理解するうえで重要な例です。
具体例による2進数加算
たとえば2進数の11と01を加算すると考えてみましょう。
10進数では3と1の加算なので、結果は4です。
最下位ビットでは1と1を足すため、S0は0、桁上がりは1になります。
上位ビットでは1と0に桁上がり1を加えるため、合計は2です。
したがってS1は0、最終Coutは1となり、答えは100です。
11 + 01 = 100
最下位ビットでは1 + 1によりS0が0、Coutが1です。
上位ビットでは1 + 0 + 1によりS1が0、最終Coutが1となります。
この計算は人が行う2進数の筆算と同じ流れです。
全加算機は筆算の各桁を電子回路として再現したものと考えると、2ビット加算器の構造がイメージしやすくなります。
真理値表の読み方と確認方法
続いては真理値表の読み方と確認方法を確認していきます。
入力パターンの並べ方
真理値表では、各入力の0と1の組み合わせを重複なく並べます。
3入力の全加算機では、000から111までの8通りを順に記載するのが一般的です。
Aを最もゆっくり変化する列、Cinを最も速く変化する列にすると、二進数のカウントのように整然と並びます。
表の順番自体は変えても構いませんが、全パターンが漏れなく含まれていることが大切です。
入力の並びが不規則だと、出力の規則性を見つけにくくなり、検証時の見落としも起こりやすくなります。
出力値の手計算による検証
真理値表を作成したら、各行でA、B、Cinを普通の整数として加算してみる方法が確実です。
合計が0ならSとCoutは00、合計が1なら01、合計が2なら10、合計が3なら11と読み替えます。
この確認では、左側がCout、右側がSという2ビットの結果になる点に注意しましょう。
たとえば入力が111なら合計は3であり、2進数では11です。
よってSだけを見ると1ですが、Coutも1でなければ正しい全加算機の出力になりません。
全加算機の出力は、SとCoutを別々に覚えるより、3つの入力の合計を2ビットで表すと考えると間違いを減らせます。
合計0は00、合計1は01、合計2は10、合計3は11という対応を使いましょう。
シミュレーションと回路図の照合
論理回路シミュレーターやHDLを使う場合でも、最初に手書きの真理値表を用意しておくと役立ちます。
回路図の配線ミス、入力名の取り違え、Coutの接続忘れは、真理値表との比較で発見しやすくなります。
特に複数桁の加算器では、最下位ビットのCinを0にしているか、各段のCoutが次段のCinへ正しく接続されているかを確認してください。
また、最終Coutを出力として残すか、桁あふれとして別途扱うかも設計条件によって変わります。
真理値表は回路を作る前の設計図であり、完成後の動作確認表でもあります。
全加算機の応用と注意点
続いては全加算機の応用と注意点を確認していきます。
多ビット加算器への拡張
全加算機を複数個直列に接続すれば、4ビット、8ビット、16ビットなどの加算器を作れます。
各桁のCoutを次の桁のCinへ渡す基本方式は、リップルキャリー加算器と呼ばれます。
構成がわかりやすく、少ない考え方で多桁演算へ拡張できる点がメリットです。
一方で、下位桁の桁上がりが上位桁まで順番に届く必要があるため、ビット数が増えるほど演算結果が確定するまでの時間が長くなります。
高速な演算が必要な回路では、桁上がり先読み加算器など、より高速な方式が使われることもあります。
オーバーフローと符号付き演算
加算結果が用意されたビット数の範囲を超える現象は、オーバーフローと呼ばれます。
符号なし整数では、最上位桁のCoutが1になったかどうかが、範囲超過の目安になります。
ただし符号付き2進数では、単純に最終Coutだけでオーバーフローを判断できない場合があります。
補数表現を使う符号付き加算では、最上位ビットへ入る桁上がりと、最上位ビットから出る桁上がりを比較する方法が用いられます。
全加算機そのものは同じ動作をしていても、データを符号付きとして扱うかどうかで、出力の解釈が変わる点に注意が必要です。
学習と設計における確認項目
全加算機を学ぶときは、真理値表、論理式、回路図、2ビット加算器の4つを関連づけて覚えると効果的です。
真理値表で出力を確認し、論理式で規則を説明し、回路図で実装し、複数桁の加算で使い方を確かめる流れです。
この順番なら、単なる暗記ではなく、入力と出力の関係を自分で導けるようになります。
A、B、Cinのどれが桁上がり入力なのかを常に意識すると、半加算機との混同も防ぎやすくなるでしょう。
回路設計では、信号名、ビットの並び順、最終Coutの扱いを明確にしておくことが重要です。
全加算機の真理値表のまとめ
全加算機は、A、B、Cinという3つの1ビット入力を加算し、和Sと桁上がりCoutを出力する論理回路です。
真理値表は全部で8通りあり、入力の合計を2進数で表すと、SとCoutをわかりやすく判定できます。
Sは3入力XORで表され、入力に含まれる1の個数が奇数のときに1となります。
Coutは、3つの入力のうち2つ以上が1のときに1となる出力です。
半加算機との違いは、下位桁から届く桁上がり入力Cinを扱える点にあります。
全加算機を接続すると2ビット加算器や多ビット加算器を構成でき、コンピューター内部の演算回路へと応用できます。
真理値表を見て入力ごとの結果を確認し、論理式と回路図へ結び付けることが、フルアダーを確実に理解する近道です。