今回は令和4年度上期 機械科目 B問題18を解説します。NANDゲートのみで構成された論理回路(図1)の真理値表を求める(a)と、図1のブロックを2組接続して全加算器を構成したとき(図2)の出力S2,C2を求める(b)の2部構成問題です。
(a)は中間ノードD,E,Fを割り付けて段階的に論理式を求め、S1が排他的論理和(EX-OR)、C1が論理積(AND)になることを確認します。(b)は(a)の結果を使って図2の全加算器としての出力を真理値表にまとめ、選択肢と照合します。
令和4年度上期 機械科目 B問題18:問題文と選択肢
まずは、実際の試験問題を確認してみましょう。

出典:一般財団法人 電気技術者試験センター「令和4年度上期 第三種電気主任技術者試験」機械科目 B問題18
電験3種 機械科目 【情報】 令和4年度上期 B問題18
以下の論理回路について,次の(a)及び(b)の問に答えよ。(a) 図1に示す論理回路の真理値表として,正しいものを次の(1)〜(5)のうちから一つ選べ。
(b) 図1に示す論理回路を2組用いて図2に示すように接続して構成したとき,A,B及びC0の入力に対する出力S2及びC2の記述として,正しいものを次の(1)〜(5)のうちから一つ選べ。
A,B (1) (2) (3) (4) (5) 00 S1=0,C1=0 S1=0,C1=1 S1=0,C1=0 S1=0,C1=1 S1=0,C1=0 01 0,0 0,0 1,0 0,0 1,0 10 0,0 0,0 0,0 1,0 1,0 11 0,1 0,1 0,1 0,1 0,1 (1)A=0,B=0,C0=0を入力したときの出力は,S2=0,C2=1である。
(2)A=0,B=1,C0=0を入力したときの出力は,S2=1,C2=0である。
(3)A=1,B=0,C0=0を入力したときの出力は,S2=0,C2=1である。
(4)A=1,B=0,C0=1を入力したときの出力は,S2=1,C2=0である。
(5)A=1,B=1,C0=1を入力したときの出力は,S2=0,C2=1である。

出題のポイント:図1は半加算器
NAND だけで組まれた図1の回路——整理すると S1=A⊕B、C1=A·B になります。これは半加算器です。
| A | B | A+B(2進数) | S1(和) | C1(桁上げ) |
| 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 1 | ★1 | 0 |
| 1 | 0 | 1 | ★1 | 0 |
| 1 | 1 | 10 | 0 | ★1 |
1+1=10(2進数)——その1桁目が S1、2桁目(桁上げ)が C1 です。「和はEX-OR、桁上げはAND」——これが半加算器の基本になります。
NAND だけで作られているのは、NAND が万能ゲートだから——1種類で済むので、IC の設計では好まれるのでした。


(b) 半加算器2組で全加算器
図2は、図1のブロックを2組つないだ回路——これで全加算器ができます。下位からの桁上げC0 も受け取れるのが半加算器との違いです。
| 半加算器 | 全加算器 | |
| 入力 | A、B の2つ | ★A、B、C0 の3つ |
| 出力 | 和と桁上げ | 和と桁上げ |
| 使える場所 | 最下位の桁だけ | ★どの桁でも |
全加算器は「3つの数を足して、和と桁上げを出す」回路です。A+B+C0 の結果が2ビット——下位が S2、上位が C2 になります。
| A | B | C0 | 合計 | S2 | C2 |
| 0 | 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 | ★1 | 0 |
| 1 | 0 | 0 | 1 | 1 | 0 |
| 1 | 0 | 1 | 2 | 0 | ★1 |
| 1 | 1 | 1 | 3 | 1 | ★1 |
「1 の個数」で判定できます——合計が0 なら00、1 なら01、2 なら10、3 なら11。S2 は1 の個数の偶奇、C2 は2個以上かどうかです。
★1 の個数が奇数なら1
★2つ以上が1 なら1=多数決

⚠️ よくある間違い
選択肢を1つずつ「合計」で確かめるのが最速です。
(1) 000 →合計0 →S2=0、C2=0——C2=1 は誤り。
(3) 100 →合計1 →S2=1、C2=0——記述と合わない。
(4) 101 →合計2 →S2=0、C2=1——記述と逆。
(5) 111 →合計3 →S2=1、C2=1——S2=0 は誤り。
「入力の1 の個数を数えて2進数にする」——これだけで5肢すべて判定できます。
加算器をつなげて多桁の計算に
全加算器を桁数分つなげば、何桁でも足し算できます。下位の桁上げを、上位の C0 に入れるだけです。
| 方式 | つなぎ方 | 速さ |
| 順次桁上げ加算器 | 桁上げを順に伝える | ★桁数に比例して遅い |
| 桁上げ先見加算器 | 桁上げを先に計算する | 速いが回路が大きい |
順次桁上げ方式では、最下位の桁上げが最上位まで伝わるのを待つ——32ビットなら32段分の遅れになります。
だから実際のプロセッサでは、桁上げを先回りして計算する方式が使われます。回路は大きくなるが、速さが桁違い——「面積と速度のトレードオフ」という設計の基本がここにも現れています。
基本は本問の全加算器——それを何個並べ、どうつなぐかという工夫の話です。加算器が分かれば、引き算も掛け算も原理は同じになります。
⏱️ 本番での進め方
①(a) 図1は半加算器。S1=A⊕B、C1=A·B。
② 01 と10 でS1=1、11 でC1=1。
③(b) 図2は全加算器。A+B+C0 の合計を2進数に。
④★1 の個数を数えるだけで5肢すべて判定できる。
💡 覚え方
「半加算器=和はEX-OR、桁上げはAND」——2つ組み合わせて全加算器。そして「入力の1 の個数を2進数にする」——それが全加算器の出力そのものです。

半加算器をNANDだけで作る
図1がNAND だけで組まれている——どうやってEX-OR とAND を作っているのかを見ておきましょう。
| ノード | 式 | 役割 |
| D | (A·B)‾ | 最初のNAND |
| E | (A·D)‾ | A 側の分岐 |
| F | (B·D)‾ | B 側の分岐 |
| S1 | (E·F)‾=A⊕B | ★和 |
| C1 | D の否定=A·B | ★桁上げ |
NAND を4個使えばEX-OR ができる——よく知られた構成です。桁上げはD をもう一度否定するだけで得られます。
1種類のゲートで済むのが最大の利点——IC の中では同じ形の素子を並べるだけになり、製造も設計も楽になるのです。
加算器から引き算へ
加算器があれば、引き算もできます——2の補数を使うのがその方法です。
A−B は A+(−B)——−B は B の全ビットを反転して1 を足したもの。反転はEX-OR で、+1 は最下位の桁上げ入力に1 を入れるだけで実現できます。
つまり全加算器の列にEX-OR を1段足すだけで、加算器が減算器にもなる——専用の引き算回路は要りません。本問の桁上げ入力という端子が、そこで生きてくるのです。
掛け算も、足し算とシフトの繰り返し——すべての算術演算が加算器を土台にしていることになります。本問の小さな回路が、計算機の基礎だと言えるでしょう。
論理回路の問題を確実に取るために
本問のようなB問題は、(a)が(b)の前提になっています。(a)を落とすと(b)も危うい——だから(a)を確実に取りましょう。
| 段階 | やること | 確認 |
| ① | 中間ノードに文字を割り付ける | 図に書き込む |
| ② | 1段ずつ式を作る | NAND なら否定を忘れない |
| ③ | 4通りの入力で真理値表を作る | ★選択肢と照合 |
2入力なら4通りしかない——全部試しても手間はわずかです。式を作るのが面倒なら、直接4通りを回路に通すほうが速いかもしれません。
(b)は(a)の結果を使うだけ——「入力の1 の個数を数えて2進数にする」という理解があれば、選択肢を1つずつ確認するだけで済みます。
加算器は情報分野の定番——半加算器と全加算器の違い、和と桁上げの式はそのまま覚えておく価値があります。
まとめ
| S1 | A⊕B(排他的論理和) |
| C1 | A・B |
| (a)の答え | (5) |
| (b)の答え | (2) |
▼あわせて解きたい関連問題
・OR・AND・NOTで構成した全加算器の真理値表(令和6年度下期):【機械】令和6年度下期B問題18
・OR・AND・NOTで構成した全加算器の真理値表(平成28年度):【機械】平成28年度B問題18

コメント