最終更新日:2026年8月24日
fe fe-technology basic-theory computer-system
まず結論
全加算器(Full Adder)とは、3つの1ビットの値を加算し、桁上がり C(Carry)とその桁の和 S(Sum)を出力する論理回路です。
科目Aでは、最初から論理式を覚えるより、次の順番で考えると判断しやすくなります。
入力に1が何個あるか数える
↓
個数を2進数で表す
↓
上位ビットをC、下位ビットをSと読む
例えば、入力が 1, 0, 1 なら1は2個です。
1 + 0 + 1 = 2
2 = 10(2進数)
10
↑↑
C S
C = 1
S = 0
「1の個数を数える」と考えるのが、全加算器を理解する近道です。
直感的な説明
全加算器は、3つのスイッチのうち、何個がONになっているかを数える回路だと考えると分かりやすくなります。
入力はすべて0か1なので、1の個数は0〜3個です。
| 1の個数 | 10進数の合計 | 2進数 | C | S |
|---|---|---|---|---|
| 0個 | 0 | 00 | 0 | 0 |
| 1個 | 1 | 01 | 0 | 1 |
| 2個 | 2 | 10 | 1 | 0 |
| 3個 | 3 | 11 | 1 | 1 |
この表を見ると、全加算器の出力はかなり単純です。
1が0個 → 00 → C=0, S=0
1が1個 → 01 → C=0, S=1
1が2個 → 10 → C=1, S=0
1が3個 → 11 → C=1, S=1
つまり、入力の並びそのものより、1が何個あるかに注目すればよいことが分かります。
定義・仕組み
全加算器には3つの入力があります。
一般には、次のように表します。
A :1つ目の入力
B :2つ目の入力
Cin :下位桁から来た桁上がり
C :次の桁へ渡す桁上がり
S :その桁の和
ここで Cin は Carry in の略です。
全加算器が「全」と呼ばれる重要な理由は、単に3つの値を足すからではなく、下位桁から来た桁上がりも入力として扱えることにあります。
まず普通の足し算として考える
入力が A=1, B=0, Cin=1 の場合を考えます。
1 + 0 + 1 = 2
2を2進数で表すと 10 です。
10
この2ビットを、そのままCとSに分けます。
10
↑↑
C S
したがって、
C = 1
S = 0
となります。
なぜ上位ビットがCなのか
2進数でも、1桁に置ける値は 0 または 1 だけです。
合計が2以上になると、その桁だけでは表せないので、上の桁へ繰り上がります。
例えば、
1 + 1 = 10
では、右側の 0 がその桁に残る値で、左側の 1 が次の桁へ送られる値です。
1 0
↑ ↑
C S
このため、
CはCarryなので桁上がりSはSumなのでその桁の和
と考えます。
全加算器の真理値表
入力3つの組合せを整理すると、次のようになります。
| A | B | Cin | 1の個数 | C | S |
|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 1 | 0 | 1 |
| 0 | 1 | 0 | 1 | 0 | 1 |
| 1 | 0 | 0 | 1 | 0 | 1 |
| 0 | 1 | 1 | 2 | 1 | 0 |
| 1 | 0 | 1 | 2 | 1 | 0 |
| 1 | 1 | 0 | 2 | 1 | 0 |
| 1 | 1 | 1 | 3 | 1 | 1 |
試験対策では、この8行を丸暗記する必要はありません。
1の個数
0個 → 00
1個 → 01
2個 → 10
3個 → 11
と考えれば、その場でCとSを求められます。
半加算器との違い
半加算器と全加算器の違いは、下位桁からの桁上がりを入力できるかどうかです。
| 回路 | 入力数 | 下位桁からの桁上がり入力 |
|---|---|---|
| 半加算器 | 2 | 扱わない |
| 全加算器 | 3 | 扱う |
半加算器は、2つの1ビットだけを加算します。
全加算器は、そこに下位桁から来た桁上がり Cin を加えて計算します。
そのため、複数桁の2進数を加算するときには全加算器が重要になります。
半加算器の仕組みは、半加算器とは?AND・XORで和と桁上がりを求める仕組みで整理しています。
このテーマは、基本情報技術者試験のコンピュータ構成要素や論理回路と関係する内容です。公式の出題範囲やシラバスは、IPA:基本情報技術者試験 から確認できます。
科目Aでどう出る?
全加算器では、入力値から C と S を求める問題や、半加算器との違いを問う問題に注意します。
判断手順1:1の個数を数える
例えば、入力が次の場合です。
A = 1
B = 1
Cin = 0
1は2個あります。
1 + 1 + 0 = 2
判断手順2:2進数にする
2 = 10
判断手順3:CとSに分ける
10
↑↑
C S
したがって、
C = 1
S = 0
です。
試験中は、次の対応だけ思い出せれば十分です。
0個 → 00
1個 → 01
2個 → 10
3個 → 11
どんな場面で使う?
複数桁の2進数を足す
全加算器は、複数桁の2進数を加算するときに使われます。
例えば10進数の筆算でも、下の桁で発生した繰り上がりを上の桁へ渡します。
2進数でも同じです。
下位桁で桁上がりが発生
↓
次の桁のCinへ渡す
↓
A + B + Cin を計算
↓
さらにCを次の桁へ渡す
この連鎖によって、複数ビットの加算ができます。
CPUの演算回路
コンピュータ内部では、加算処理がさまざまな演算の基本になります。
全加算器を複数組み合わせることで、複数ビットの加算回路を構成できます。
よくある誤解・混同
CとSを逆にする
最も起こりやすい混同です。
C = Carry
→ 桁上がり
→ 上位ビット
S = Sum
→ その桁の和
→ 下位ビット
例えば合計が2なら、2進数では 10 です。
10
↑↑
C S
したがって C=1, S=0 です。
10進数の「10」と考えてしまう
10 はここでは2進数の10です。
2進数の10 = 10進数の2
数字の見た目は同じでも、何進数かによって意味が違います。
3つの入力を別々の論理演算として考えすぎる
入力値を見た瞬間にANDやORなどの論理式を考え始めると、初学者にはかえって分かりにくくなることがあります。
まずは普通の足し算として、
A + B + Cin
を計算し、その結果を2進数にする方法で十分です。
半加算器と全加算器を「入力数だけ」で覚える
半加算器 → 入力2つ
全加算器 → 入力3つ
という覚え方でも問題は解けますが、本質はもう一歩先にあります。
半加算器
→ 下位桁からの桁上がりを入力しない
全加算器
→ 下位桁からの桁上がりCinを入力できる
ここまで理解しておくと、複数桁の加算とのつながりも見えやすくなります。
まとめ(試験直前用)
- 全加算器は、3つの1ビットを加算して
CとSを出力する CはCarry=桁上がり、SはSum=その桁の和- 迷ったら、入力にある1の個数を数える
- 0個→
00、1個→01、2個→10、3個→11 - 半加算器との違いは、下位桁からの桁上がり
Cinを入力できること
全加算器
↓
1の個数を数える
↓
2進数にする
↓
上位ビット = C
下位ビット = S