応用情報技術者 2019年 秋期 午前2 問23
問題文
3ビットのデータ X1,X2, X3 に偶数パリティビットcを付加する回路はどれか。

選択肢
ア:
イ:
ウ:(正解)
エ:
🔒 解説は解答すると表示されます
偶数パリティ生成回路【午前2解説】
正解の理由
偶数パリティビットcは、3ビットデータ X1, X2, X3 を合わせた全ビットの1の個数が偶数になるように設定します。これは論理式で表すと
(⊕は排他的論理和=XOR)であり、これを解くと
となります。したがって、入力ビットをXORでカスケードした回路が必要です。図の中でこの構成になっているのは ウ です。よって ウ が正解です。
解法ステップ
- 問題の要件を論理式に翻訳:全ビットの1の個数を偶数にする(偶数パリティ)。
- 偶数パリティ条件をXORで表す:。
- を解く:。
- 選択肢と対応させる:XORゲートをカスケードしている図(追加曲線のあるゲートの2段接続)が該当する(ウ)。
選択肢別の誤答解説
- ア:2段のAND()で を出力します。これは「全て1のときだけ1」を返す論理であり、パリティ(奇数・偶数判定)にはならないため不適です。
- イ:アの出力にインバータを付けた構成で、(NAND)を出力します。これも「全て1のときだけ0/それ以外1」を返す論理であり、パリティ判定(入力ビットの1の個数が奇数か偶数か)には対応しません。インバータを付けたからといって自動的に“奇数パリティを生成する”わけではありません(下の誤解参照)。
- ウ:XORゲートを二段にカスケードしており、論理的に を出力します。これが偶数パリティビットの定義と一致するため正解です。
- エ:ウと同じXORカスケードの出力にインバータが付いています。したがって出力は となり、入力データの1の個数が偶数のときに1を出す(つまり奇数パリティを作る)ため、偶数パリティ用の回路としては誤りです。
よくある誤解
- 「インバータを付けると常に奇数パリティになる」
誤りです。インバータは単に出力を反転するだけで、もとの回路が何を出すかによって効果が変わります。XOR出力を反転すれば偶数と奇数の関係が逆になる(偶数パリティ↔奇数パリティ)が、もとの回路がANDやNANDなど別の論理ならインバータを付けてもパリティ判定にはならないことが多いです。 - 「ORやANDを重ねればパリティになる」
ANDやORの多段接続は「全て1」「いずれか1」など別の条件を判定する論理で、1の個数が奇数か偶数かを判定するXORの性質とは異なります。パリティにはXOR(または加算のモジュロ2)が本質です。 - 「XORの記号をORと混同する」
XORは追加の曲線や⊕で表される場合が多いので、図記号の識別を誤ると選択を誤ります。記号を見てXORかORかを正しく判別してください。
補足コラム
- XORの性質:XORは結合律と可換律を満たすため、複数ビットのパリティは任意の順序でカスケードしても同じ結果になります。つまり 。
- パリティ計算は数学的には「加算の剰余2」:。ハードウェアではXORゲート列で効率的に実現します。
- 偶数パリティと奇数パリティの差はビットの反転だけで得られるため、奇数パリティが必要な場合は偶数パリティ回路の出力を逆転すればよい()。
FAQ
Q1. なぜXORで「奇数個の1」を検出できるのですか?
A1. XORは2入力で「入力が異なれば1」を返します。これを多段に適用すると、入力群に含まれる1の個数が奇数か偶数かで最終出力が1か0かに決まるため、奇数個の場合に1となります。
A1. XORは2入力で「入力が異なれば1」を返します。これを多段に適用すると、入力群に含まれる1の個数が奇数か偶数かで最終出力が1か0かに決まるため、奇数個の場合に1となります。
Q2. nビットのデータでも同様にXORを繋げればよいですか?
A2. はい。XORは結合律があるため、任意の順でカスケードしてもビットのパリティ を得られます。
A2. はい。XORは結合律があるため、任意の順でカスケードしてもビットのパリティ を得られます。
Q3. 偶数パリティと奇数パリティの回路はどう変えるのですか?
A3. 偶数パリティなら 、奇数パリティなら (あるいは偶数パリティの出力をインバータで反転)です。
A3. 偶数パリティなら 、奇数パリティなら (あるいは偶数パリティの出力をインバータで反転)です。
コード例(3ビットの真理表を確認)
# 3ビットの偶数パリティビット c を出す真理表
for x1 in (0,1):
for x2 in (0,1):
for x3 in (0,1):
c = x1 ^ x2 ^ x3 # XORで偶数パリティビットを計算
total = x1 + x2 + x3 + c
print(x1, x2, x3, "-> c=", c, " total_ones=", total)
関連キーワード: XOR、パリティビット、インバータ、NAND、排他的論理和

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

