2進数の加算と論理回路
- 2進数の加算を桁ごとに計算し、桁上がりを正しく扱える。
- AND・OR・NOT の真理値表を書ける。
- 半加算器が「1桁の2進数の和」を計算する仕組みを説明できる。
2進加算の復習 15分 → ゲートのしくみ 15分 → 半加算器の図と表 20分 → 全加算器の図と表 25分 → 演習 10分 → 要点の言い直し 5分。分かった問題も、途中の桁上がりや出力の理由を説明してみましょう。
1. 2進数の加算
各桁の和が2以上になると、次の桁へ1を上げます(桁上がり)。10進数の「10になったら繰り上がる」と同じしくみですが、2進数では 1 + 1 = 10(2) なので、和の桁は0、桁上がりは1です。
| A | B | 和 | 桁上がり |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 1 | 1 | 0 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 1 |
- 右端: 1 + 0 = 1。桁上がりなし。
- 右から2桁目: 1 + 1 = 10(2)。この桁は0、左へ1を上げる。
- 右から3桁目: 1 + 0 + 上がってきた1 = 10(2)。この桁は0、さらに左へ1を上げる。
- 左端: 0 + 0 + 1 = 1。
答え: 1001(2)(7 + 2 = 9)。桁上がりを各桁で別に書くと、途中で迷いにくくなります。
2. 論理回路
コンピュータは、0と1の信号を組み合わせる回路で計算します。論理ゲートは入力信号を受け取り、決められた規則で出力を作る部品です。図では線の色と数値の両方で、信号が0か1かを示します。
- AND(論理積): 両方が1のときだけ1。
- OR(論理和): どちらかが1なら1。
- NOT(否定): 入力を反転する。
- XOR(排他的論理和): 2つの入力が異なるとき1。同じなら0。
2入力ゲートの出力は、入力の組み合わせをすべて並べた真理値表で整理できます。半加算器では、和 S = A XOR B、桁上がり C = A AND B として、同じ入力を2つのゲートへ送ります。
3. 操作: ゲート図と真理値表
ゲートと入力 A・B を選んでください。回路図の出力と真理値表の該当行が連動します。表の4通りを順番に確かめ、入力から出力を予想してから選ぶと練習になります。
4. 半加算器
AND と XOR(排他的論理和)を組み合わせると、1桁の2進数どうしの和(S)と桁上がり(C)が得られます。この回路を半加算器といいます。XOR は「A と B が異なるとき1」なので和 S、AND は「両方が1のとき1」なので桁上がり C になります。たとえば 1 + 1 = 10(2) では、S=0、C=1 です。
5. 発展: 全加算器で下の桁からの繰り上がりも足す
共通テスト対策では、まず論理ゲートの真理値表と半加算器を確実にします。全加算器は、半加算器を組み合わせて複数桁の桁上がりを扱う仕組みを理解するための補足です。
複数桁の加算では、ある桁に A・B のほか、右隣の桁から来た桁上がり Cin も加えます。3つの入力を足して、和の1桁 S と次の桁へ送る桁上がり Cout を出す回路が全加算器です。
回路を2段に分けて考えます。まず A と B を半加算器に通し、中間の和 P と桁上がり C1 を作ります。次に P と Cin をもう一つの半加算器に通して S と C2 を作り、最後に C1 と C2 を OR でまとめます。
S = A XOR B XOR Cin
Cout = (A AND B) OR ((A XOR B) AND Cin)
全加算器の真理値表
| A | B | Cin | S(和) | Cout(桁上がり) | 十進数で確認 |
|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 | 0 + 0 + 0 = 0 |
| 0 | 0 | 1 | 1 | 0 | 0 + 0 + 1 = 1 |
| 0 | 1 | 0 | 1 | 0 | 0 + 1 + 0 = 1 |
| 0 | 1 | 1 | 0 | 1 | 0 + 1 + 1 = 2 |
| 1 | 0 | 0 | 1 | 0 | 1 + 0 + 0 = 1 |
| 1 | 0 | 1 | 0 | 1 | 1 + 0 + 1 = 2 |
| 1 | 1 | 0 | 0 | 1 | 1 + 1 + 0 = 2 |
| 1 | 1 | 1 | 1 | 1 | 1 + 1 + 1 = 3 |
全加算器を各桁に1つずつ置き、ある桁の Cout を左隣の桁の Cin に渡せば、多桁の加算を実行できます。筆算と同じく、桁上がりは右から左へ伝わります。
6. 練習
- 1101(2) + 0110(2) を計算しなさい。
- A = 1, B = 0 のとき、AND・OR の出力をそれぞれ答えなさい。
- 半加算器に A = 1, B = 1 を入れたとき、C と S は何か。
- 半加算器の出力が S = 1, C = 0 になる入力の組をすべて答えなさい。
- 0111(2) + 0010(2) を、桁上がりを各桁に記録して計算しなさい。
- 全加算器に A=1, B=0, Cin=1 を入力したとき、S と Cout を答えなさい。
- 全加算器の Cout は、どの2つの中間桁上がりをどのゲートでまとめているか。
答えと考え方を見る
- 1 0011(2)。右端から加え、桁上がりを次の桁に足します。
- AND = 0、OR = 1。AND は両方が1のときだけ1、OR はどちらかが1なら1です。
- C = 1、S = 0。1 + 1 = 10(2) なので、桁上がりが1、和の桁が0です。
- (A, B) = (0, 1) または (1, 0)。入力が異なると XOR の和 S が1になります。
- 1001(2)。右から2桁目と3桁目で桁上がりが続きます。
- S=0、Cout=1。1+0+1=2=10(2) なので、和の桁は0、桁上がりは1です。
- C1 と C2 を OR ゲートでまとめます。どちらか一方でも1なら、次の桁へ1を送ります。