技術(非IT系)

加算器とは?意味や仕組みは?(半加算器・全加算器の違い・論理回路・真理値表など)

加算器の意味と演算結果
当サイトでは記事内に広告を含みます

加算器は、コンピュータや電卓、組み込み機器が数値を計算するために欠かせない論理回路です。

一見すると単純な足し算でも、二進数で扱う回路の内部では桁上がりを含めた明確なルールに従って処理されています。

半加算器と全加算器の役割、ANDやOR、XORといった論理ゲートとの関係を理解すると、CPUの演算処理やデジタル回路の基本が見えやすくなるでしょう。

この記事では、加算器の意味から真理値表の読み方、複数ビットの加算方法まで、初めて学ぶ方にもつながりが分かるように解説します。

加算器の意味と演算結果

加算器の意味と演算結果

それではまず、加算器の意味と演算結果について解説していきます。

加算器が担う二進数の足し算

加算器とは、複数の二進数を入力し、その合計を二進数で出力するデジタル回路のことです。

英語ではAdderと呼ばれ、コンピュータ内部の算術論理演算装置であるALU、マイクロコントローラ、信号処理回路などに広く使われています。

十進数の世界では、たとえば7と5を足して12にしますが、回路では0と1だけを用いて同じ計算を進めます。

二進数では1と1を加算すると10になるため、下位の桁には0を出し、上位の桁へ1を渡さなければなりません。

この上位桁へ渡す値がキャリー、または桁上がりです。

加算器は合計を表すサムと、次の桁に渡すキャリーを区別して出力する点に大きな特徴があります。

加算器の基本的な出力は、計算結果の下位ビットであるサムと、桁上がりを示すキャリーの二つです。

この二つを正しく扱えることで、1桁だけでなく8ビット、16ビット、32ビットといった多桁の加算へ発展できます。

コンピュータ内部における役割

加算器は足し算専用の部品に見えますが、実際には多くの演算の土台になっています。

減算は補数を利用して加算へ置き換えられるため、加算器は引き算の処理にも深く関わります。

アドレス計算、カウンタの増加、タイマーの更新、プログラムカウンタの制御なども、内部では加算の考え方で動作します。

たとえばメモリ上の次のデータ位置を求める場面では、基準となるアドレスに一定の値を加えます。

このため、加算器の性能はCPU全体の処理速度にも影響しやすい要素です。

高速なプロセッサでは、単純に桁を順番に計算するだけではなく、キャリーを先回りして求める工夫も採用されます。

二進数における四つの基本計算

1ビット同士の加算には、入力の組み合わせが四つあります。

0と0、0と1、1と0、1と1の四通りです。

0と0の結果は0で、キャリーは発生しません。

0と1、または1と0の結果は1で、こちらもキャリーは0です。

1と1だけは結果が二進数の10となるため、サムは0、キャリーは1になります。

入力A 入力B 十進数での合計 二進数の結果 サム キャリー
0 0 0 0 0 0
0 1 1 1 1 0
1 0 1 1 1 0
1 1 2 10 0 1

この四つの規則を回路として実現したものが半加算器です。

ただし、多桁演算では前の桁から届くキャリーも計算に加える必要があり、そこで全加算器が必要になります。

半加算器の構成と真理値表

続いては、半加算器の構成と真理値表を確認していきます。

半加算器の定義

半加算器とは、二つの1ビット入力を加算する論理回路です。

入力をAとBとした場合、出力はサムSとキャリーCになります。

名称に半という言葉が付く理由は、前の桁から来るキャリー入力を扱わないためです。

最下位ビットの計算では前の桁が存在しないため、半加算器だけでも処理できます。

一方で、2桁目以上の計算に半加算器だけを使うと、下位桁からの桁上がりを反映できません。

半加算器は単体では限定的でも、全加算器の構成要素として重要な回路です。

XORゲートとANDゲートの関係

半加算器は一般に、XORゲートとANDゲートを組み合わせて作られます。

XORは排他的論理和と呼ばれ、二つの入力が異なるときだけ1を出力する論理です。

その性質は、キャリーを考慮しない加算結果であるサムと一致します。

ANDは論理積であり、二つの入力がどちらも1のときだけ1を出力します。

これは1と1を加算した場合にだけキャリーが発生する条件と同じです。

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

サムSはA XOR Bです。

キャリーCはA AND Bです。

XORは入力が異なる場合に1、ANDは両方が1の場合に1となります。

論理式を覚えるだけでなく、入力と出力の対応を表にして確かめると理解が安定します。

回路図では、AとBをXORゲートとANDゲートの両方へ入力し、それぞれの出力をサムとキャリーに接続します。

半加算器の真理値表

真理値表は、論理回路に入力できるすべての組み合わせと、その出力を一覧にした表です。

半加算器では入力が二つなので、組み合わせ数は二の二乗で四通りになります。

表を読む際は、サムとキャリーを別々の出力として確認することがポイントです。

A B サムS キャリーC 回路の動作
0 0 0 0 加算結果は0
0 1 1 0 加算結果は1
1 0 1 0 加算結果は1
1 1 0 1 結果10の下位桁と桁上がり

真理値表では、1と1の行だけサムが0になることに注意しましょう。

これは誤りではなく、二進数の10における下位ビットが0であることを表しています。

キャリーの1を次の桁へ渡すことで、正しい多桁演算につながります。

全加算器の入力と桁上がり

続いては、全加算器の入力と桁上がりを確認していきます。

全加算器の三つの入力

全加算器とは、二つの加算対象ビットに加え、前の桁からのキャリー入力も計算できる回路です。

一般には入力A、入力B、キャリー入力Cinの三つを受け取ります。

出力はサムSとキャリー出力Coutの二つです。

つまり全加算器は、AとBとCinを足した結果の下位ビットをSに出し、上位へ渡す桁上がりをCoutに出します。

多ビットの二進数を正確に足すには、全加算器が中心的な役割を担います。

たとえばAが1、Bが0、Cinが1の場合、合計は十進数で2です。

二進数では10となるため、サムは0、キャリー出力は1になります。

三つの入力の合計が0または1ならキャリー出力は0で、合計が2または3ならキャリー出力は1です。

半加算器二個による構成

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

最初の半加算器でAとBを加算し、中間サムと中間キャリーを求めます。

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

二つの半加算器から出たキャリーをORゲートへ入れると、最終的なキャリー出力Coutが得られます。

この構成は、複雑な回路も基本的な論理ゲートの組み合わせで実現できることを示す代表例でしょう。

全加算器のサムは、A XOR B XOR Cinです。

キャリー出力は、AとBのAND、AとCinのAND、BとCinのANDをORでまとめた結果です。

三つの入力のうち二つ以上が1なら、キャリー出力は1になります。

キャリー出力の式は少し長く見えますが、三つのうち少なくとも二つが1なら桁上がりが起こると考えると理解しやすくなります。

回路設計では論理式、真理値表、論理ゲート図を行き来しながら確認する習慣が役立ちます。

全加算器の真理値表

入力が三つになる全加算器では、真理値表の行数は二の三乗で八通りです。

すべての組み合わせを確認すれば、桁上がりがどの条件で生じるかを明確に判断できます。

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

最後の行では、1と1と1を加えるため合計は3です。

二進数の3は11なので、下位ビットであるサムも1、上位へ渡すキャリー出力も1になります。

真理値表を使えば、回路シミュレーションや設計後の動作確認もしやすくなります。

半加算器と全加算器の違い

続いては、半加算器と全加算器の違いを確認していきます。

キャリー入力の有無

半加算器と全加算器の最も大きな違いは、キャリー入力を受け取るかどうかです。

半加算器はAとBの二入力だけを扱います。

全加算器はAとBに加え、前桁の桁上がりであるCinも扱います。

そのため半加算器は最下位ビットの加算には適していますが、上位ビットを含む通常の多桁演算には全加算器が必要です。

最下位桁では半加算器、それより上の桁では全加算器という役割分担をイメージするとよいでしょう。

比較項目 半加算器 全加算器
入力数 二つ 三つ
入力内容 AとB AとBとキャリー入力
出力 サムとキャリー サムとキャリー出力
主な用途 最下位ビットや基礎回路 多ビット加算
真理値表の行数 四行 八行
構成の例 XORゲートとANDゲート 半加算器二個とORゲート

回路規模と扱える計算

半加算器は論理ゲート数が少なく、構造も理解しやすい回路です。

教育用の実験や論理演算の入門では、半加算器から学ぶことがよくあります。

一方、全加算器はキャリー入力が増える分だけ構成が複雑になりますが、実用的な演算回路には欠かせません。

4ビットの数値同士を足す場合、最下位桁には半加算器を置き、残る三桁には全加算器を置く構成が考えられます。

ただし、設計の方針によっては最下位桁も全加算器で統一し、Cinを0に固定する場合もあります。

部品の共通化や設計の見通しを優先したいときに便利な方法です。

用途ごとの選び方

二つの1ビット信号の足し算だけを確認したい場合は、半加算器で十分です。

複数桁のデータを扱う回路、CPUの内部回路、カウンタ回路、演算機能を持つFPGA設計では、全加算器が基本になります。

論理回路を学ぶ目的なら、まず半加算器の真理値表と論理式を理解し、次に全加算器へ進む流れが自然でしょう。

半加算器は二つのビットだけを加算する回路です。

全加算器は前の桁から届くキャリーも含めて計算するため、多桁加算を連続して処理できます。

違いの中心は、キャリー入力Cinの有無にあります。

両者を別々の知識として覚えるより、半加算器を組み合わせて全加算器を作れるという関係を押さえると、理解が深まります。

多ビット加算と論理回路の種類

続いては、多ビット加算と論理回路の種類を確認していきます。

リップルキャリー加算器の仕組み

複数の全加算器を下位ビットから上位ビットへ直列につないだ回路は、リップルキャリー加算器と呼ばれます。

各桁で発生したキャリーが、波紋のように次の桁へ順番に伝わることからこの名称が付いています。

構造が分かりやすく、比較的少ない回路で実装できる点が利点です。

4ビット加算器なら四つの全加算器を接続し、下位桁のCoutを次の桁のCinへ渡します。

最終桁から出るキャリーは、計算結果が扱えるビット幅を超えたことを知らせる情報にもなります。

ただし、下位桁のキャリーが確定するまで上位桁の結果を完全には決められません。

ビット数が増えるほど待ち時間が積み重なるため、高速動作が求められる回路では遅延が課題になります。

キャリー伝搬遅延は、加算器の性能を考えるうえで重要な用語です。

キャリー先読み加算器の考え方

キャリー先読み加算器は、各桁のキャリーを順番に待つのではなく、入力から早めに予測する方式です。

各ビットがキャリーを発生させる条件と、キャリーを次へ伝える条件を利用して、複数桁先のキャリーを計算します。

回路は複雑になりやすいものの、リップルキャリー加算器より高速化しやすい特徴があります。

高性能なCPUや演算回路では、キャリー先読みの考え方をさらに発展させた方式が使われます。

代表的なものとして、桁選択加算器、キャリー保存加算器、並列プレフィックス加算器などがあります。

キャリーを発生する条件は、AとBがともに1の場合です。

キャリーを伝搬する条件は、AとBのどちらか一方だけが1の場合として考えられます。

これらの条件を組み合わせることで、後続の桁のキャリーを先読みできます。

学習段階では、まずリップルキャリー加算器の流れを理解することが大切です。

その後に高速加算器を学ぶと、なぜ先読みが必要になるのかを具体的に捉えられるでしょう。

オーバーフローと符号付き演算

固定されたビット数で計算すると、表現できる最大値を超えることがあります。

この状態をオーバーフローと呼びます。

たとえば4ビットの符号なし整数では、0から15までしか表せません。

15に1を加えると本来の結果は16ですが、4ビットの範囲を超えるため、最終キャリーを別途確認しなければなりません。

符号付き整数では、最上位ビットを符号として使う場合が多く、単純な最終キャリーだけではオーバーフローを判断できないことがあります。

符号付き演算では、正の数同士の加算で負の数になった場合などを確認する必要があります。

加算器は正しいビット列を出力していても、そのビット列が指定された表現範囲に収まるとは限りません。

実際の設計では、最終キャリーやオーバーフローフラグも計算結果とともに扱うことが重要です。

加算器の活用場面と学習方法

続いては、加算器の活用場面と学習方法を確認していきます。

CPUとALUにおける利用

CPUのALUは、加算、減算、論理演算、比較などを担当する回路です。

加算器はその中心にあり、レジスタ内のデータ演算や命令実行を支えています。

減算では、引く数を二の補数で表して足し合わせる方式が一般的です。

この仕組みにより、加算器を中心とした回路で足し算と引き算の両方を効率よく扱えます。

比較演算でも減算の結果やフラグを利用するため、加算器は単なる算術回路以上の存在です。

命令の実行、メモリアドレスの計算、分岐先の算出など、加算器が関わる場面は数多くあります。

FPGAと電子工作での実装

FPGAでは、HDLと呼ばれるハードウェア記述言語を使って加算器を設計できます。

Verilog HDLやVHDLで加算演算子を記述すると、合成ツールが適切な加算回路へ変換してくれる場合があります。

一方で回路の仕組みを理解するためには、論理ゲートから半加算器と全加算器を組み立てる練習も有効です。

電子工作用のブレッドボードでは、XOR、AND、ORのICを用意し、LEDでサムとキャリーを表示する実験ができます。

入力スイッチを切り替えながら真理値表と照らし合わせると、抽象的な論理式が実際の信号変化として理解できるでしょう。

実装時には、入力信号の浮きを防ぐプルアップ抵抗やプルダウン抵抗、電源の安定化にも注意が必要です。

論理式が正しくても、配線や電気的な条件に問題があれば期待どおりに動かないためです。

理解を深める確認手順

加算器を学ぶ際は、二進数の足し算を紙に書いて確認することから始めるとよいでしょう。

次に半加算器の真理値表を作り、XORとANDの出力がなぜ一致するのかを確かめます。

その後、キャリー入力を追加して全加算器の八通りの表を作成します。

最後に複数の全加算器を接続し、たとえば二進数の0111と0001を足して1000になる流れを追うと、多ビット演算の全体像をつかめます。

加算器の学習では、二進数の筆算、真理値表、論理式、回路図の順に同じ内容を見比べる方法が効果的です。

表だけを暗記するのではなく、桁上がりがどこからどこへ移るのかを追うことで、実践的な理解につながります。

回路シミュレータを活用すれば、部品を壊す心配なく入力パターンを試せます。

キャリーの動きや出力の変化を視覚的に確認したい場合にも、便利な学習手段です。

加算器の仕組みのまとめ

加算器は、二進数の足し算を実行するための基本的な論理回路です。

出力は計算結果の下位ビットであるサムと、次の桁へ渡すキャリーで構成されます。

半加算器は二つの入力を扱い、XORゲートでサム、ANDゲートでキャリーを求めます。

全加算器は前桁からのキャリー入力も加えて計算するため、複数ビットの演算に欠かせません。

半加算器二個とORゲートで全加算器を構成できる点は、論理回路の組み合わせを理解する重要なポイントです。

さらに全加算器を直列接続すればリップルキャリー加算器となり、多桁の二進数を加算できます。

高速処理ではキャリー先読み加算器のような方式も利用され、CPUやALUの性能を支えています。

真理値表、論理式、回路図、二進数の筆算を結び付けて学ぶことで、加算器の仕組みをより確実に理解できるでしょう。