戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

基本情報技術者 2009年 春期 午前(科目A)25


問題文

図に示す1けたの2進数xとyを加算し、z(和の1けた目)及びc(けた上げ)を出力する半加算器において、AとBの素子の組合せとして、適切なものはどれか。
基本情報技術者 2009年 春期 午前(科目A) 問25の問題画像基本情報技術者 2009年 春期 午前(科目A) 問25の選択肢の画像

選択肢

(正解)

🔒 解説は解答すると表示されます

半加算器の論理構成【午前解説】

正解の理由

図での出力 z(和の1けた目)は入力 x, y の「ちょうど1つだけが1」のときに1になり、出力 c(けた上げ)は「両方が1」のときに1になります。これは論理的に表すと (排他的論理和)、(論理積)です。選択肢の組合せのうち、ブロック A を排他的論理和(XOR)、ブロック B を論理積(AND)とした組合せがこれらの式に一致するため、選択肢が正解です。

解法ステップ

  1. 出力の意味を整理する
    • z:和の1けた目 → 1になるのは「入力の1の個数が奇数(ここではちょうど1個)」のとき。
    • c:けた上げ → 1になるのは「両方とも1」のとき。
  2. 真理値表を作る(x,y の全組合せについて z と c を決める)。
  3. 真理値表から論理式を導く:
    • z = x XOR y(
    • c = x AND y(
  4. 選択肢と照合して、A に XOR、B に AND を割り当てている組合せを選ぶ。
真理値表(参考)
xyz ()c ()
0000
0110
1010
1101
(表から z が「ちょうど1個の1のときのみ1」であること、c が「両方1のときのみ1」であることが分かります)

選択肢別の誤答解説

  • ア(A: 排他的論理和、B: 論理積)
    A が 、B が であり、z と c の定義に完全に一致します。したがって正解です(選択肢)。
  • イ(A: 否定論理積、B: 否定論理和)
    否定論理積(NAND)は 、否定論理和(NOR)は を出力します。どちらも z, c の真理値(特に c が両方1のとき1)と一致しません。出力が反転しているため不適切です。
  • ウ(A: 否定論理和、B: 排他的論理和)
    A に NOR を割り当てると z が反転した振る舞い(x=y=0 のとき1など)になり、和の1けた目の条件と合いません。B に XOR を置いても、XOR はけた上げ(両方1のときに1)ではなく、ちょうど1つのときに1になるため c には不適切です。
  • エ(A: 論理積、B: 論理和)
    A を AND にすると z が両方1のときしか1にならず、和の1けた目(ちょうど1つのとき)に合いません。B を OR にすると c が「どちらかが1のとき」1になり、けた上げ(両方1のときのみ1)と矛盾します。

よくある誤解

  1. XOR と OR の混同
    • OR は「どちらか一方または両方が1のとき1」を返します(両方1のときも1になる)。
    • XOR は「ちょうど1つだけ1のときに1」を返します。半加算器の和ビットはこの「ちょうど1つ」の条件です。
      この違いを明確に意識してください。
  2. キャリーを生成するゲートの誤認
    • キャリーは「両方1」の条件に対応するので、AND が自然に対応します。XOR や OR では条件が合致しないため誤りになります。

補足コラム

半加算器(half adder)は1ビット同士の加算で「和」と「繰り上がり」を出力します。これを組み合わせて全加算器(full adder)を作ると、桁あふれを含む多ビット加算が可能になります。全加算器は2つの半加算器と1つの OR(または XOR/AND の組合せの変形)で構成できます。回路設計では、用途に応じて NAND だけで実現するなどの変換(論理合成)も行われます。
簡単な実装例(Python で真理値表を出す)
def half_adder(x, y):
    z = x ^ y  # XOR
    c = x & y  # AND
    return z, c

for x in (0,1):
    for y in (0,1):
        print(x, y, half_adder(x,y))

FAQ

Q. なぜ AND をキャリーに使うと直感的に分かるのですか?
A. キャリーは「桁上がり」で、桁上がりが発生するのは両方のビットが1のときだけです。AND はまさにその条件に対応します。
Q. XOR を使わずに和ビットを実現できますか?
A. 論理的には NAND や NOR のみを使っても等価回路を作れます(ブール代数の恒等変形により)。ただし基本表現としては XOR が直観的で簡潔です。
Q. 全加算器ではどのように半加算器が使われますか?
A. 全加算器は2つの半加算器を使い、一方の半加算器で入力2ビットの和を取り、もう一方でその和と前段からのキャリーを加え、最終的なキャリーは両方のキャリーの OR をとる構成が一般的です。

関連キーワード: 半加算器、XOR、AND、論理回路、真理値表、キャリー、和ビット、ブール代数
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

基本情報技術者
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について