2進数の足し算では「1 + 1 = 10」のように桁が繰り上がる場面がありました。この繰り上がりを、AND・OR・XORなどの論理回路だけで実現する仕組みが「加算器」です。
この記事では、加算器の基本である半加算器と全加算器を、仕組みからやさしく解説します。
📖 まだの方は先にこちらを読んでおくと理解がスムーズです。
→ 論理回路とは?基本のAND・OR・NOTをやさしく解説
→ 2進数の基礎|10進数との変換方法まとめ
半加算器とは?
半加算器は、1桁同士の2進数の足し算を行う、もっとも基本的な加算回路です。入力は2つ(AとB)、出力も2つ(合計を表す「S(サム)」と、繰り上がりを表す「C(キャリー)」)です。
実は半加算器は、新しいゲートを使わなくても、これまで紹介したXORとANDの2つだけで作ることができます。
- S(合計) = A XOR B
- C(繰り上がり) = A AND B
| A | B | S(合計) | C(繰り上がり) |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 1 | 1 | 0 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 1 |
読み方のコツ:「1 + 1」の行だけ、合計Sが0になって、代わりに繰り上がりCが1になっています。これはまさに「1 + 1 = 10」を、SとCの2つの出力で表現している形です。
✏️ 実際に試してみよう:XORゲートとANDゲートを1つずつ配置して、同じ入力(A・B)をそれぞれにつなぐと半加算器の完成です。両方を1にしたときだけ繰り上がりが点灯することを確認してみましょう。見本回路を読み込むことでも確認できます。
→ 論理回路シミュレーターで半加算器を作ってみる
半加算器の限界
半加算器には1つ弱点があります。それは、「前の桁からの繰り上がり」を受け取る入力がないということです。1桁目の計算なら問題ありませんが、2桁目・3桁目…と複数桁の足し算になると、前の桁で発生した繰り上がりも一緒に足し込む必要があります。この問題を解決するのが「全加算器」です。
全加算器とは?
全加算器は、半加算器に「前の桁からの繰り上がり(Cin)」を受け取る入力を1つ追加した回路です。入力は3つ(A、B、Cin)、出力は2つ(合計S、次の桁への繰り上がりCout)になります。
全加算器は、実は半加算器を2個と、ORゲートを1個組み合わせるだけで作ることができます。
- 1つ目の半加算器で「A」と「B」を足し、仮の合計と仮の繰り上がりを求める
- 2つ目の半加算器で、その仮の合計と「Cin」を足し、最終的な合計Sと2つ目の繰り上がりを求める
- 2つの半加算器で出た繰り上がりを、ORゲートでまとめて最終的なCoutにする
| A | B | Cin | S | Cout |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 1 | 0 |
| 0 | 1 | 0 | 1 | 0 |
| 0 | 1 | 1 | 0 | 1 |
| 1 | 0 | 0 | 1 | 0 |
| 1 | 0 | 1 | 0 | 1 |
| 1 | 1 | 0 | 0 | 1 |
| 1 | 1 | 1 | 1 | 1 |
読み方のコツ:3つの入力のうち、1になっているものの個数に注目してみましょう。1の数が奇数(1個または3個)ならS(合計)は1、1の数が2個以上ならCout(繰り上がり)は1になります。
✏️ 実際に試してみよう:半加算器を2つとORゲートを1つ組み合わせて、全加算器を作ってみましょう。3つの入力すべてを1にしたときに、合計とCoutの両方が1になることを確認できます。見本回路を読み込むことでも確認できます。
→ 論理回路シミュレーターで全加算器を作ってみる
全加算器をつなげると何ができる?
全加算器の便利なところは、Coutを次の桁のCinに接続することで、何桁でもつなげていける点です。たとえば全加算器を4個つなげれば、4桁の2進数同士の足し算ができる回路(4ビット加算器)になります。実際のコンピュータのCPUの中でも、この考え方を元にした加算回路が使われています。
まとめ
- 半加算器は、XORとANDの組み合わせだけで作れる「1桁の足し算」回路
- 半加算器は前の桁からの繰り上がりを受け取れないという弱点がある
- 全加算器は、半加算器を2つとORを1つ組み合わせることで、繰り上がりも扱えるようにした回路
- 全加算器を複数つなげることで、何桁の足し算にも対応できる
一見複雑に見える加算器も、分解してみるとこれまで学んだAND・OR・XORの組み合わせにすぎません。シミュレーターで実際に手を動かしながら組み立てて、仕組みを体感してみてください。


コメント