
武蔵野個別指導塾の特徴
高校情報I 論理回路と半加算器—信号の流れを追って和と桁上がりを求める|武蔵野個別指導塾

途中出力の表と2進数の足し算を対応させ、桁上がりまで半加算器を追います。
よくあるのは、二つの入力が1のとき、和の欄だけを書いて桁上がりを落とすという場面です。1と1を足した結果は2進数で10なので、下の桁の0と上の桁へ送る1の両方が必要です。回路の記号を見てすぐ答えを決める前に、線がどこにつながるかをたどりましょう。範囲表と授業ノートで記号や出題範囲を照らし合わせながら、途中の信号を記録する練習をします。
問題はどの順に読むか
出方の1つは、入力が与えられた回路で、各ゲートの出口と最後の出力を求める問題です。枝分かれした線には同じ信号が流れること、次のゲートはその入力がそろってから判定することが鍵です。見た目の上下だけで入力の組を決めず、接続先を指でたどります。
もう1つは、入力の組を順番に並べ、途中出力を含む真理値表を完成させる問題です。2入力なら00、01、10、11の4通りを調べます。1行が1つの入力条件に対応するので、前の行の途中値を次の行へ持ち越さないようにします。
さらに、半加算器の2つの出力を、2進数の和の桁と桁上がりに対応させる問題があります。出力が2本ある理由を足し算に戻して説明できると、記号の丸暗記だけに頼らずに済みます。ここではゲートの接続と半加算器を扱い、前の桁からの桁上がりも入力する回路や電子部品の物理的な仕組みには立ち入りません。
入力から出口へ信号を運ぶ
ここでは信号の0を偽、1を真として扱います。ANDは2つの入力がともに1のとき1、ORは少なくとも一方が1のとき1、XORは2つの入力が異なるとき1です。NOTは入力が0なら1、1なら0に反転します。回路に書かれたゲートごとの規則を使い、矢印の向きに沿って処理します。
図1のように、2本の入力をANDに入れ、その出口をさらにNOTに入れる場合を考えます。ANDの出口を途中出力P、NOTの出口をYと名付けると、最初にPを決めてからYを反転します。線上のPは最後の答えではなく、次のゲートへの入力でもあります。

図1では入力がともに1ならPは1、Yは0です。入力の片方が0ならPは0なのでYは1です。線の分岐は値を分けて別の値にする操作ではありません。同じ線から複数のゲートへ分かれた場合も、それぞれに同じ0または1が届きます。
真理値表では列の見出しに入力、途中出力、最終出力の順に名前を書きます。先に列を用意すると、途中を飛ばしたために反転の前後を取り違える失敗を見つけやすくなります。各行の値は、同じ行の入力から独立に計算します。
基本例題:2つの出口を表にする
入力AとBがそれぞれ0または1です。AとBをXORに入れた出力をS、同じAとBをANDに入れた出力をCとします。入力を00、01、10、11の順に並べ、SとCをそれぞれ1桁の0または1で答えてください。Sは和の下の桁、Cは桁上がりです。
図2のように、AとBはそれぞれ2本に分岐し、XORとANDの両方に届きます。2つのゲートは直列ではなく並列です。XORの結果をANDに入れるのではないことを、線の接続で確かめます。

図2の回路を各行で追うと、次のようになります。
| A | B | S | C |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 1 | 1 | 0 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 1 |
1行目は入力が同じなのでXORのSは0、両方が1ではないのでANDのCも0です。 2行目は入力が異なるのでSは1、両方が1ではないのでCは0です。 3行目も入力が異なるのでSは1、両方が1ではないのでCは0です。 4行目は入力が同じなのでSは0、両方が1なのでCは1です。
出力を元の足し算に戻します。Cを上の桁、Sを下の桁とする2桁の2進数は順に00、01、01、10です。これは0と0、0と1、1と0、1と1を足した値と一致します。特に最後の10は、下の桁が0で桁上がりが1という意味です。和をSだけと呼ぶ場合もありますが、足し算の結果全体はCとSを合わせて読みます。
半加算器は1桁ずつの2つの入力を足し、下の桁と桁上がりを出す回路です。前の桁からの桁上がりを受け取る入力はありません。表でSとCが同じ位置に書かれていても、2つは別の出口なので、列の見出しを付けたまま答えることが大切です。
一段増えた回路を追う
入力XとYをORに入れた出力をP、XとYをANDに入れた出力をQとします。さらにPとQをXORに入れ、出力をRとします。X、Yを00、01、10、11の順に並べて、P、Q、Rを各1桁で求めてください。線の分岐によって、XとYはそれぞれORとANDの両方に届きます。
まずPとQは同じ入力から別々に求めます。その後、同じ行のPとQを最後のXORに渡します。入力XとYを最後のXORに直接入れるのではなく、出口につながっている2本を使います。
| X | Y | P | Q | R |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 1 | 0 | 1 |
| 1 | 0 | 1 | 0 | 1 |
| 1 | 1 | 1 | 1 | 0 |
00ではORもANDも0で、最後の入力は00です。01と10ではORが1、ANDが0になり、最後の入力はどちらも10です。11では両方とも1になり、最後の入力は11です。XORは異なる2つの値に対して1を出すので、Rは順に0、1、1、0です。
表を元の接続に戻して確かめると、Pが0の行は両入力が0の行、Qが1の行は両入力が1の行です。最後にPとQが異なる行だけRが1になっています。途中の列を省くと、11の行でORの1だけを見てRも1とする誤りに気づきにくくなります。回路に段が増えたら、出口ごとに列を増やすのが確実です。
誤答を線まで戻して直す
基本例題でAとBがともに1のとき、Sを1、Cを0と書いたとします。これは2進数の足し算の結果を下の桁だけで表せると考え、XORとANDの役割を逆にした誤答です。図3のように各ゲートへ同じ11を入れ直すと、XORの出口は0、ANDの出口は1です。

図3の正しい出力をC、Sの順に並べると10です。10進数の2に相当し、元の1と1の和に戻ります。Sだけが0だから合計が0だと読むことも誤りです。桁上がりCが上の桁にあるかを確認してください。
別の失敗は、枝分かれを別々の入力値と考えることです。Aから伸びる2本は同じAであり、一方を勝手に反転しません。反転が必要なのはNOTの出口です。また、表の11の行だけを直して終わらず、00、01、10にも同じ規則を適用して列全体を見直します。答えの数が合っていても、途中の線を取り違えると別の回路では正しく追えません。
表から接続を読み直す
表を埋める問題では、逆に出口の列から入力の条件を説明する練習も役立ちます。基本例題のSが1である行は01と10で、入力の値が異なる行です。Cが1である行は11で、両方の入力が1の行です。このように全行を見てから言葉にすると、01の行だけを見て「Bが1ならSは1」と結論する誤りを避けられます。11ではBが1でもSは0です。
出力の列が同じになったとしても、途中の信号まで同じとは限りません。一段増えた回路では、最後のRはXとYのXORと同じ並びですが、途中にはORのPとANDのQがあります。問題がPも求めるように指定していれば、最後の列だけを書いても途中の処理は示せません。途中の列を求める目的は、各ゲートが受け取る値を確かめ、接続の読み違いを見つけることです。
線が交差する図を読む際は、交差が接続を意味するかどうか、問題に示された印や説明を確認します。線が近いことだけを理由に別の線へ飛び移らず、入力から出口まで連続してたどります。表の値が合わない場合も、ゲートの規則を変える前に、どの2本がその入力になっているかを確認してください。
手を動かす4問
どの問題も信号の0を偽、1を真とします。表は指定した行順で書き、各出力は0または1の1桁で答えてください。答えを見る前に、線の分岐とゲートの出口を自分で紙に書き込みます。
- 入力DとEをANDに入れた出力をF、FをNOTに入れた出力をGとします。D、Eを00、01、10、11の順に並べ、FとGを求めてください。
- 入力HとJがともに0のとき、HとJをORに入れた出力Kと、同じHとJをXORに入れた出力Lを求めてください。さらにHが1、Jが0の場合も同じ順に求めてください。
- 1桁の2進数の入力MとNを半加算器に入れます。Mが0、Nが1の場合と、Mが1、Nが1の場合について、桁上がりを上の桁、和を下の桁とする2桁の2進数でそれぞれ答えてください。
- 入力UとVをXORに入れた出力をW、UとVをORに入れた出力をTとします。WとTをANDに入れた出力をZとするとき、U、Vを00、01、10、11の順に並べ、W、T、Zを求めてください。
答えと行ごとの確かめ
-
F、Gの順に、00は0、1、01は0、1、10は0、1、11は1、0です。ANDの出口Fが1になるのは両方が1の行です。各行でGがFの反対になっていることを、NOTへの接続に戻って点検します。00の行を見落とすと、入力に1がない場合の反転を確かめられません。
-
H、Jが00のときK、Lは0、0です。10のときは1、1です。00ではどちらの入力にも1がなく、10では一方だけが1です。ORとXORはこの2行では同じ値ですが、両方が1ならORは1、XORは0になるので、2つの規則を同じものとして覚えないようにします。
-
順に01、10です。0と1の和は1なので、上の桁は0、下の桁は1です。1と1の和は2なので、2進数の10に戻ります。後者の下の桁を1としたり上の桁を落としたりすると、元の足し算と一致しません。
-
W、T、Zの順に、00は0、0、0、01は1、1、1、10は1、1、1、11は0、1、0です。まず元の入力からXORとORを別々に求め、最後に各行のWとTをANDに渡します。Zが1の行ではWとTがともに1であることを確かめます。11ではORが1でもXORが0なので、最後のANDは0です。
練習では、入力の順番を交換しても同じ結果になるかも調べられます。ここで使った2入力ゲートは入力を入れ替えても出力が変わりません。ただし、その性質は接続先を省略してよいという意味ではありません。途中出力が別々のゲートへ進む回路では、どの出口がどこへ届くかを必ず追います。
解き終えた表の点検
途中列がある表は、左から右への計算だけでなく、右から左へ条件を戻して確認できます。練習4のZが1なら、最後のANDへ届くWとTが両方1でなければなりません。さらにWが1なら元の2入力は異なります。該当する行を見直してこの条件が成立するかを調べると、最後の列だけを書き間違えた場合に気づけます。
反対に、Zが0という情報だけでは、WとTのどちらが0かは決まりません。00では両方が0、11ではWが0でTが1です。結果から原因を決めるときも、可能な行を残して考えます。入力の行をすべて埋め、各行を元のゲートに通すことが、取りこぼしの確認になります。
覚えておくこと
入力を分岐しても同じ値が届きます。
途中出力を列にして、接続順に計算します。
半加算器の下の桁はXOR、桁上がりはANDです。
出力を2進数の足し算へ戻して点検します。
どこで止まったかを見つける
表が合わなかったら、最初に誤った列を探します。入力列から間違っていれば行の並べ方、最初のゲートの列なら演算の規則、最後の列なら接続先や反転の位置を確かめます。答えだけ消して書き直すより、値が変わった線に印を付けると原因が残ります。
個別指導で確かめる場合は、本人に1行を声に出してたどってもらい、分岐した信号と途中出力の受け渡しをノート上で確認します。半加算器では11の行だけでなく、桁上がりが出ない行も足し算に戻します。2本の出口の意味を説明できれば、表の値と桁の役割が結び付きます。
読んで終わりにするか、ここから変えるか。
武蔵境駅徒歩30秒、講師1人に生徒1人の完全1対1。授業のあいだ、先生は隣を離れません。いまの詰まりを、無料相談でそのまま話してください。
まず15分だけ電話で話したい方は、無料電話相談(15分)から。塾からお電話を差し上げます。
本気になった日が、入塾の日。
お子様の教育、迷ったら「丸投げ」してください。必ず、期待以上の結果で返します。武蔵野で育む、武蔵境で学ぶ。
電話は年中無休。365日、24時間、お電話可能。



