---
title: "半加算器とは？AND・XORで和と桁上がりを求める仕組み【基本情報技術者試験】"
description: "半加算器の仕組みを、和SはXOR、桁上がりCはANDという判断軸で整理します。真理値表、論理式、全加算器との違いを比較し、基本情報技術者試験で選択肢を切る方法を解説します。"
last_modified_at: "2026-08-07"
canonical_url: "https://stemtazoo.github.io/fe/half-adder/"
section: "fe"
---

## まず結論

**半加算器（Half Adder）**とは、2つの1ビットの数を加算し、下位ビットの和 `S` と上位ビットの桁上がり `C` を出力する論理回路です。

科目Aでは、次の対応を押さえると判断できます。

```text
桁上がり C
→ 両方が1のときだけ1
→ AND

和 S
→ 片方だけが1のとき1
→ XOR
```

したがって、半加算器の論理式は次のとおりです。

```text
C = A・B
S = A XOR B
```

XORを論理積・論理和・否定で表すと、次の式になります。

```text
S = (A・¬B) + (¬A・B)
```

## 直感的な説明

半加算器は、2進数の1桁だけを足し算する回路です。

1ビットの数 `A` と `B` を加算すると、結果は最大2ビットになります。

```text
0 + 0 = 00
0 + 1 = 01
1 + 0 = 01
1 + 1 = 10
```

この2ビットを、次のように分けます。

```text
上位ビット C
→ Carry
→ 桁上がり

下位ビット S
→ Sum
→ 和
```

例えば、`1 + 1 = 10` では、下位ビットの和は0、上位ビットの桁上がりは1です。

```text
1 + 1 = 10
          ↑↑
          C S
```

## 定義・仕組み

### 半加算器の真理値表

半加算器の入力と出力を整理すると、次のようになります。

| A | B | C | S |
|---:|---:|---:|---:|
| 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 |
| 1 | 0 | 0 | 1 |
| 1 | 1 | 1 | 0 |

この表から、CとSの規則を読み取ります。

### 桁上がりCはAND

Cが1になるのは、AとBの両方が1のときだけです。

```text
A=1
かつ
B=1
→ C=1
```

これは論理積ANDと同じです。

```text
C = A・B
```

### 和SはXOR

Sが1になるのは、AとBのどちらか片方だけが1のときです。

```text
A=0, B=1
→ S=1

A=1, B=0
→ S=1
```

一方、AとBが同じ値ならSは0です。

```text
A=0, B=0
→ S=0

A=1, B=1
→ S=0
```

これは排他的論理和XORと同じです。

```text
S = A XOR B
```

### XORを論理式で表す

XORが1になる条件は2つあります。

```text
Aだけが1
→ A・¬B

Bだけが1
→ ¬A・B
```

この2つをORで結びます。

```text
S = (A・¬B) + (¬A・B)
```

### 回路の構成

半加算器は、AND回路とXOR回路を組み合わせて構成できます。

```text
A ─┬─ AND ─→ C
    │
B ─┘

A ─┬─ XOR ─→ S
    │
B ─┘
```

## どんな場面で使う？

### 2進数の加算回路

半加算器は、デジタル回路で2進数を加算するための基本部品です。

CPU内部の演算回路では、複数の加算回路を組み合わせて、より大きなビット数の計算を行います。

### 論理回路の学習

半加算器は、真理値表から論理式を作る練習によく使われます。

```text
真理値表を見る
↓
1になる条件を取り出す
↓
論理式へ変換する
```

この考え方は、他の論理回路問題にもそのまま使えます。

### 全加算器の構成要素

全加算器は、半加算器を組み合わせて構成できます。

半加算器が扱う入力は2つですが、全加算器は下位桁からの桁上がりも入力に含めます。

## よくある誤解・混同

### 和だからORとは限らない

論理式では `+` がORを表すことがありますが、2進数の加算結果の下位ビットSは単純なORではありません。

`1 + 1` のとき、ORなら1ですが、加算結果の下位ビットは0です。

```text
1 OR 1 = 1

1 + 1 = 10
下位ビットS = 0
```

したがって、SはORではなくXORです。

### CとSを逆にしない

```text
C
→ Carry
→ 桁上がり

S
→ Sum
→ 和
```

英語の意味と結びつけると覚えやすくなります。

### AND・OR・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 |

試験では、次の言い換えで切り分けます。

```text
両方が1
→ AND

どちらか一方以上が1
→ OR

どちらか片方だけが1
→ XOR
```

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

半加算器は、2つの入力AとBだけを加算します。

全加算器は、AとBに加えて、下位桁から来る桁上がりも入力に含めます。

| 回路 | 入力 |
|---|---|
| 半加算器 | A、B |
| 全加算器 | A、B、下位桁からの桁上がり |

```text
入力が2つ
→ 半加算器

入力が3つ
→ 全加算器
```

### 科目Aでの切り分け

まず、桁上がりCを確認します。

```text
桁上がりは11のときだけ
→ C = A・B
```

これで、CがORになっている選択肢を消せます。

次に、和Sを確認します。

```text
01と10のときだけ1
→ XOR
→ (A・¬B) + (¬A・B)
```

この2段階で正解を選べます。

## まとめ（試験直前用）

- 半加算器は、2つの1ビットの数を加算する論理回路
- 出力は、和Sと桁上がりCの2つ
- 桁上がりCは、両方が1のときだけ1になるAND
- 和Sは、片方だけが1のとき1になるXOR
- `C = A・B`
- `S = (A・¬B) + (¬A・B)`
- 下位桁からの桁上がり入力を扱うのは全加算器

```text
半加算器
C = AND
S = XOR
```

ANDを反転したNANDや、NANDだけで基本ゲートを作る仕組みは、[NANDとは？AND・OR・NOTを作れる万能ゲートの仕組み](https://stemtazoo.github.io/fe/nand-gate/)で整理しています。
