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

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


問題文

図は全加算器を表す論理回路である。図中のxに1、yに0、zに1を入力したとき、出力となるc(けた上げ数)、s(和)の値はどれか。
基本情報技術者 2009年 秋期 午前(科目A) 問25の問題画像基本情報技術者 2009年 秋期 午前(科目A) 問25の選択肢の画像

選択肢

(正解)

##: 全加算器の出力(x=1, y=0, z=1)【午前2 解説】

要点まとめ

  • 結論:入力が x=1, y=0, z=1 のとき、出力は上位桁 c=1、和 s=0 であり選択肢はウが正解です。
  • 根拠:全加算器の和は 、桁上げは (論理積と和)で計算できます。
  • 差がつくポイント:XOR の順序や多数決的なキャリー式を確実に覚え、手で逐次計算する習慣を付けてください。

正解の理由

正解: (c=1, s=0)
全加算器の定義に従い、和 と桁上げ は次の式で与えられます。
  • (ここで は論理和、隣接は論理積)
与えられた入力を代入すると、

  • よって出力は 、選択肢のうち「c=1, s=0」に当たるのがウです。

よくある誤解

  • XOR の性質で 1⊕0⊕1 を (1⊕1)⊕0 として誤って 0⊕0 = 0 と計算してしまうミス。
  • キャリーを単に任意の一つの入力が1なら1と誤解し、多数決(2つ以上)を見落とすこと。

解法ステップ

  1. 全加算器の出力式を確認する:, を確認。
  2. 与えられた入力 x=1, y=0, z=1 を式に代入する。
  3. XOR を順に計算する:1⊕0=1、さらに 1⊕1=0 を得て
  4. キャリー項を計算する:1·0=0, 0·1=0, 1·1=1 を足して
  5. 表示された選択肢と照合して、c=1, s=0 に該当する選択肢を選ぶ(ウ)。

選択肢別の誤答解説

  • ア(c=0, s=0): s=0 は一致するが c が 0 になっており、xとzの積 1·1 を見逃した誤り。
  • イ(c=0, s=1): s を 1 としている点が間違い。実際は 1⊕0⊕1 = 0 になる。
  • ウ(c=1, s=0): 正解。上記の通り , で条件を満たす。
  • エ(c=1, s=1): c は正しいが s が誤り。和の XOR 計算を誤ったケース。

補足コラム

  • 全加算器は半加算器2個と1つの OR 回路で実装可能です。半加算器は , を出力します。
  • キャリー式 は「入力のうち少なくとも2つが1であるとき1」つまり多数決的な特性を持ちます。
  • 真理値表(全8通り)を覚えておくと試験で高速に判断できます。簡単な Python コードで確認可能です:
# 全加算器の真理値表
for x in (0,1):
    for y in (0,1):
        for z in (0,1):
            s = x ^ y ^ z
            c = (x & y) | (y & z) | (z & x)
            print(x,y,z, "-> c=", c, "s=", s)
  • 実務ではキャリー伝播遅延が性能に影響するため、キャリー生成・伝搬(carry generate/propagate)回路やキャリールックアヘッドが用いられます。

FAQ

Q: 全加算器の s を計算する別の直感的な方法は?
A: 入力の1の個数が奇数なら s=1、偶数なら s=0(XOR は奇数パリティ検出)。
Q: キャリー c は「多数決」と表現できますか?
A: はい。x,y,z のうち少なくとも2つが1のときに c=1 となるため、多数決的性質と考えられます。

関連キーワード: 全加算器、半加算器、XOR、キャリー、真理値表、ブール代数、デジタル回路、キャリールックアヘッド、伝播遅延
← 前の問題へ次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

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

クイズ画面へ遷移する

すぐに利用可能!

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

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