基本情報技術者 2017年 春期 午前(科目A) 問22
問題文
図に示す、1桁の2進数とを加算して、 (和の1桁目)及び (桁上げ)を出力する半加算器において、AとBの素子の組合せとして、適切なものはどれか。


選択肢
ア:(正解)
イ:
ウ:
エ:
🔒 解説は解答すると表示されます
半加算器の回路構成【午前解説】
正解の理由
正解:ア
半加算器は2つの1ビット入力から「和の1桁目」と「桁上げ」を出力します。これらの論理関係は次のとおりです。
半加算器は2つの1ビット入力から「和の1桁目」と「桁上げ」を出力します。これらの論理関係は次のとおりです。
- 和(最下位ビット): (排他的論理和)
- 桁上げ: (論理積)
図では上側のブロックAが和の出力線に直列で接続され、下側のブロックBが両入力を受けて桁上げを出力しているため、Aに排他的論理和、Bに論理積が対応します。以上より選択肢ア(A: 排他的論理和、B: 論理積)が正しいです。
解法ステップ
- 出力の意味を確認する:z は和の1桁目、c は桁上げであることを確認する。
- 半加算器の定義を思い出す:和はXOR、桁上げはANDで表現される。
- 図の配線を追う:Aが和の出力線に繋がり、Bが両入力を受けて桁上げを出していることを確認する。
- 選択肢と照合する:A→排他的論理和、B→論理積を含む選択肢を選ぶ(ア)。
選択肢別の誤答解説
- ア:A = 排他的論理和、B = 論理積 → 正解。和は、桁上げはに一致する。
- イ:A = 否定論理積(NAND)、B = 否定論理和(NOR) → NAND/NOR は否定を含むため出力が逆になり誤り。半加算器の正しい真理値を満たさない。
- ウ:A = 否定論理和(NOR)、B = 排他的論理和(XOR) → 桁上げがXORでは成立しない(両方1のとき桁上げが1になる必要がある)。
- エ:A = 論理積(AND)、B = 論理和(OR) → A が AND では和のビットが正しくならない(例えば のとき和は1だがANDは0)。
よくある誤解
- XOR と OR を取り違える:OR はどちらかが1なら1だが、和(1ビット目)は入力が「異なるとき」に1となるXORである点を誤認しやすい。
- 図のノードを「接続点」と見落とす:塗りつぶしノードや垂直線での接続がどの信号をどこに送るかを示すため、回路経路を正確に読む必要がある。
- 桁上げを OR と考える誤り:桁上げは「両方1のとき」にのみ発生するため AND が正しい。
補足コラム
- 真理値表(確認用)
x,y → z(=x⊕y), c(=x∧y)
0,0 → 0,0
0,1 → 1,0
1,0 → 1,0
1,1 → 0,1 - 半加算器は単純だが、3入力(上位桁からの繰り上がりも含む)を扱う場合は全加算器(full adder)を使い、通常は複数の全加算器を連結して多ビット加算を行う。
- 実装上の注意:XOR は単一ゲートで実現されることもあるが、NAND や NOR の組合せで構成することも多く、遅延やゲート数を考慮する必要がある。
FAQ
Q1: XOR と OR の見分け方は?
A1: OR はどちらか一方でも1なら1、XOR は入力が異なるときに1。真理値表の 1,1 の行で両者が異なる点を確認すると見分けやすいです。
A1: OR はどちらか一方でも1なら1、XOR は入力が異なるときに1。真理値表の 1,1 の行で両者が異なる点を確認すると見分けやすいです。
Q2: 桁上げを OR にしたら何が問題?
A2: OR にすると や の場合にも桁上げが1になってしまい、数値としての加算結果が正しくありません。桁上げは「両方1のときのみ」なので AND が正しいです。
A2: OR にすると や の場合にも桁上げが1になってしまい、数値としての加算結果が正しくありません。桁上げは「両方1のときのみ」なので AND が正しいです。
Q3: 半加算器と全加算器の違いは?
A3: 半加算器は2入力で和と桁上げを出す回路。全加算器は3入力(2つのビット+下位からの桁上げ)を扱えるため、連結して多ビット加算を実装できます。
A3: 半加算器は2入力で和と桁上げを出す回路。全加算器は3入力(2つのビット+下位からの桁上げ)を扱えるため、連結して多ビット加算を実装できます。
関連キーワード: 半加算器、排他的論理和、論理積、XOR、AND、真理値表、論理回路、ブール代数、桁上げ、回路設計

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

