computer system foundationCSF 2026
デジタル回路基礎 / 01.2

4ビット・リップルキャリー加算器

1ビットの論理から複数ビットの加算へ

半加算器、全加算器、4ビットRCAを順に構成し、各ビットのキャリーが 低位から高位へ伝搬する仕組みと、その遅延を観察する。

所要:25–35分 難易度:★★☆ 前提:論理ゲートの基礎
01

2進数の「足し算」のルール

1ビット加算を Carry と Sum の2出力として読む。

0+0
C,S = 00
Carry 0 / Sum 0
0+1
C,S = 01
Carry 0 / Sum 1
1+0
C,S = 01
Carry 0 / Sum 1
1+1
C,S = 10
Carry 1 / Sum 0

「1+1=10」を2つの出力に分ける

10進数で「9+1=10」になると一桁上がるように、2進数では 「1+1=10(二進数)」 で桁が上がる。
この「上の桁に1を持ち越す」ことを 桁上がり(キャリー / Carry) と呼ぶ。 右端の0が現在の桁の Sum、左端の1が次の桁へ渡す Carry になる。

複数桁の足し算例:5 + 3 = 8

10 進数
  5
+ 3
= 8
2 進数(4ビット)
各桁への Carry: 1 1 1 0
 0 1 0 1
+ 0 0 1 1
= 1 0 0 0
0101₂ + 0011₂ = 1000₂ = 8₁₀

2進数の足し算も、右(LSB)から順に1桁ずつ計算して、桁上がりを左隣の桁に伝えていく。
この例では bit0 で生じた Carry が bit1、bit2、bit3 へ順に伝わる。この直列の伝搬経路が リップルキャリー(Ripple Carry) と呼ばれる。

02

半加算器(Half Adder)

1ビット + 1ビット を計算する最小の回路

仕組みを分解する

S
Sum(和)の出力
「片方だけが 1」のとき和が 1。両方 0 や両方 1 では和は 0。
これは XOR ゲート の動作と一致する。
S = A ⊕ B
C
Carry(桁上がり)の出力
桁上がりが起きるのは「両方が 1」のときだけ。
これは AND ゲート の動作と一致する。
C = A · B

半加算器の内部構造(XOR + AND)

XOR AND A B S = A XOR B C = A AND B

真理値表(行をクリックで確認)

A B S(和) C(桁上がり)
0000
0110
1010
1101

入力を切り替える

入力 A
入力 B
=
Sum S
0
Carry C
0

なぜ「半」加算器なのか。  2つのビットを足せるが、前の桁からの 桁上がり入力(Cin)を受け取れない。 複数桁の計算では「前の桁から来たキャリーも一緒に足す必要がある」—— それが次の「全加算器」である。

03

全加算器(Full Adder)

A、B、前段の Cin を加算し、S と次段の Cout を出力する。

半加算器2個とORゲートで構成する

全加算器は 半加算器を2つOR ゲート1つ で構成できる。

  1. まず A と B を半加算器1で計算 → 中間の Sum₁ と Carry₁
  2. 次に Sum₁ と Cin を半加算器2で計算 → 最終 S と Carry₂
  3. Carry₁ OR Carry₂ = Cout(最終桁上がり)
論理式
S = A ⊕ B ⊕ Cin
Cout = (A·B) + Cin·(A ⊕ B)
Cout = A·B + A·Cin + B·Cin
ここで「+」は OR、「·」は AND を表す。

全加算器の内部構造(HA×2 + OR)

HA 1 HA 2 OR A B S1 Cin S C1 C2 Cout

真理値表(8通り)

ABCin SCout
00000
00110
01010
01101
10010
10101
11001
11111

3入力を切り替える

A
B
Cin
=
Sum S
0
Cout
0
04

4ビット RCA の構造

全加算器4段を Carry の直列経路で接続する。

BLOCK

構成部品

全加算器(FA)× 4
各ビット(bit0〜bit3)を担当

PATH

リップル伝搬

C1 → C2 → C3 の順に
Carry が低位から高位へ伝わる

RANGE

無符号の範囲

各入力は0〜15
C4を含む5ビット結果は0〜31

Carry の添字と伝搬順序

初期入力
C0 = Cin
bit 0 / LSB
FA [0]
A0 + B0 + C0
C1 を出力
bit 1
FA [1]
A1 + B1 + C1
C2 を出力
bit 2
FA [2]
A2 + B2 + C2
C3 を出力
bit 3 / MSB
FA [3]
A3 + B3 + C3
C4 を出力
最終 Carry
C4 = Cout
05

4ビット RCA シミュレータ

bit0からbit3まで、Carry が確定する順序を追跡する。

入力の設定 左が MSB

A
= 0
B
= 0
(通常は 0)

計算結果

A(10進)
0
B(10進)
0
下位4ビット S
0000
最終 Carry C4
0
5ビット結果(C4S)
00000
合計(10進)
0
状態:

Carry 伝搬ログ

A と B を設定して Step / Play を実行してください
06

RCA の限界:なぜ遅い?

Carry のクリティカルパスと高速化手法を比較する。

RCA のクリティカルパス

最悪の場合、bit0で発生したCarryが全段を通過し、bit31のSumまたは最終Coutが確定するまで待つ必要がある。 したがって段数Nに対してCarry経路の遅延は線形に増える。これは回路の最大動作周波数を制限する クリティカルパス になる。

Carry chain depth ∝ N
段数に比例

高速化:並列Carryネットワーク

Carry-Lookaheadは各ビットのGenerate(G)とPropagate(P)からCarryをまとめて求める。 Kogge–StoneやBrent–Kungなどの並列プレフィックス加算器は、この計算を木構造にして論理段数を減らす。 実際の高性能ALUでは、面積・配線・消費電力とのバランスに応じて複数方式を組み合わせる。

Prefix tree depth ∝ log2(N)
階層化した場合

加算器方式の比較

種類 遅延 回路規模 主な用途
半加算器 (HA)最小2ゲート1ビット加算
全加算器 (FA)典型構成で5ゲートRCA の基本単位
リップルキャリー (RCA)O(N)FA × N小規模・低面積重視
CLA / Prefix階層化でO(log N)高性能ALU