
今回のテーマは「パリティチェック」についてです。
パリティチェック?

基本情報技術者試験や応用情報技術者試験で出題される「パリティチェック」の問題。水平パリティ、垂直パリティ、水平垂直パリティなどの言葉を知らないと難しく感じる問題ですが、知っていればそこまで難しい問題ではありません。
本記事では、データの誤り検出方式のひとつである「パリティチェック」について解説します。
スポンサーリンク

動画(YouTube)で学びたい方はこちら
目次
パリティチェックとは
ネットワーク上を流れるデータは、途中でノイズなどの影響で波形が変わり、通信相手に正しいデータが届かないことがあります。
そこで、パリティチェックやCRC(巡回冗長検査)などを用いて、誤りを検出したり、訂正したりします。
パリティチェックは、送信するビット列に対して、パリティビットと呼ばれるビットを付加し、データの誤りを検出します。
偶数パリティと奇数パリティ
パリティビットを付加する方法には「偶数パリティ」と「奇数パリティ」があります。
偶数パリティは、ビット列の中の「1」の数が「偶数」になるように、パリティビットをセットします。
下記の図は、「偶数パリティ」と「奇数パリティ」のイメージ例です。

「偶数パリティ」では、ビット列の中の「1」の数が「偶数」になるように、パリティビットをセットします。
送信側で「1」の数が「偶数」になるように設定し、受信側は「1」の数が「偶数」であるか確認します。「1」の数を確認した結果、「1」の数が「奇数」の場合、誤りと判断します。
- ビット列「0100001」は「1」の数がすでに「偶数」なので、パリティビットに「0」をセット
- ビット列「0110001」は「1」の数が「奇数」なので、「偶数」になるように、パリティビットに「1」をセット

「奇数パリティ」では、ビット列の中の「1」の数が「奇数」になるようにパリティビットをセットします。
送信側で「1」の数が「奇数」になるように設定し、受信側は「1」の数が「奇数」であるか確認します。「1」の数を確認した結果、「1」の数が「偶数」の場合、誤りと判断します。
- ビット列「0100001」は「1」の数が「偶数」なので、「奇数」になるように、パリティビットに「1」をセット
- ビット列「0110001」は「1」の数がすでに「奇数」なので、パリティビットに「0」をセット
パリティビットでできることは「1ビットの誤り」を検出するだけで、偶数個のビット誤りは検出できません。
また、どのビットが誤りかは判断できないので、誤り訂正はできません。
水平パリティと垂直パリティ
パリティビットの付加方式には「偶数パリティ」と「奇数パリティ」がありますが、パリティビットの付加位置には、「垂直パリティ」と「水平パリティ」があります。
次の図は「垂直パリティ」のイメージ例です。(※偶数パリティを使用)

垂直パリティは、データのビット列を一定ブロックごと区切り、垂直方向に対してパリティビットを付加します。
次の図は「水平パリティ」のイメージ例です。(※偶数パリティを使用)

水平パリティは、データのビット列を一定ブロックごと区切り、水平方向に対してパリティビットを付加します。
水平垂直パリティチェックとは
パリティビットの付加位置には、水平方向に付加する「水平パリティ」と、垂直方向に付加する「垂直パリティ」があります。
そして、水平と垂直の2方向にパリティビットを付加するのが「水平垂直パリティ」です。
次の図は「水平垂直パリティ」のイメージ例です。(※偶数パリティを使用)

「水平パリティ」や「垂直パリティ」は、1ビット(奇数個)の誤りを検出できますが、位置が特定できないため、誤りは訂正できません。
それに対し「水平垂直パリティチェック」は、1ビットの誤りであれば、位置が特定できるため、誤りを訂正できます。
【誤り検出 例1】1ビットの誤り
送信側で「1」の数が「偶数」(※偶数パリティを使用)になるように、パリティビットを設定し、データを送信したところ、次の図のように、1ビットが反転(0→1に反転)したとします。
この1ビットの反転をどうやって、検出・訂正するのか、流れを説明します。

受信側は「1」の数が「偶数」であるか確認します。
「1」の数を確認した結果、次のように特定の「行」と「列」に誤りを検出しました。

水平と垂直のパリティチェックの結果、誤りを検出、さらに誤りの位置が特定できたため、誤りを訂正できます。
【誤り検出 例2】2ビットの誤り
送信側で「1」の数が「偶数」(※偶数パリティを使用)になるように、パリティビットを設定し、データを送信したところ、次の図のように、2ビットが反転(0→1に反転)したとします。
この2ビットの反転をどうやって、検出するのか、流れを説明します。

受信側は「1」の数が「偶数」であるか確認します。
「1」の数を確認した結果、次のように複数の「行」と「列」に誤りを検出しました。

水平と垂直のパリティチェックの結果、ある程度の範囲までは特定できるが、正確な位置は特定できません。
このように、2ビット以上の誤りがある場合、誤りは訂正できません。
スポンサーリンク
基本情報技術者試験 過去問の解説
基本情報技術者令和2年免除 問6
垂直パリティは、データのビット列を一定ブロックごと区切り、垂直方向に対してパリティビットを付加する方法で、1ビット(奇数個)の誤りを検出できます。

通信回線の伝送誤りに対処するパリティチェック方式(垂直パリティ)の記述として、適切なものはどれか、ア~エを順番に確認していきます。
ア:1ビットの誤りを検出できる。
正解:垂直パリティの説明です。垂直パリティは、1ビット(奇数個)の誤りを検出できます。
イ:1ビットの誤りを訂正でき,2ビットの誤りを検出できる。
不正解:水平垂直パリティチェックの説明です。
ウ:奇数パリティならば1ビットの誤りを検出できるが,偶数パリティでは1ビットの誤りも検出できない。
不正解:奇数パリティ、偶数パリティともに1ビット(奇数個)の誤りを検出できます。(「偶数パリティでは1ビットの誤りも検出できない」という部分が誤り)
エ:奇数パリティならば奇数個のビット誤りを,偶数パリティならば偶数個のビット誤りを検出できる。
不正解:奇数パリティ、偶数パリティともに1ビット(奇数個)の誤りを検出できます。(「偶数パリティならば偶数個のビット誤りを検出できる」という部分が誤り)

「ア」が正解です。
基本情報技術者試験おすすめの参考書・問題集
いちばんやさしい 基本情報技術者 | 『基本情報技術者試験』試験に、短期間で一発合格するための試験対策本。ITの知識がまったくない、未経験者やでもスラスラと学習を進められるよう、丁寧に解説。 |
かやのき先生の基本情報技術者教室 | 基本情報技術者をめざす方のためのやさしいオールインワンタイプの参考書&問題集。イラストや豊富な図解・例え話を駆使して理解しやすく・記憶に残りやすいように説明。 |
基本情報技術者 パーフェクトラーニング過去問題集 | 科目A・Bともに万全の対策ができる、定番の過去問題集!科目A・科目Bの両方について万全の対策ができる。 |
キタミ式イラストIT塾 基本情報技術者 | すべての解説をイラストベースで行っているため,とてもわかりやすい解説本。いちばん最初に読む基本情報技術者試験関連の書籍を探している人におすすめ! |
出るとこだけ!基本情報技術者[科目B] | 基本情報技術者【科目B】対策の定番書!前提知識+解き方+試験問題を掲載。効率よく学習できる。 |
基本情報技術者 合格教本 | 出題範囲を体系的にきちんと理解しながら学習したい人におすすめ!基本情報技術者試験の定番テキストの改訂版。 |
基本情報技術者 超効率の教科書+よく出る問題集 | 動画でスムーズに学習スタート、テキストでしっかり理解度を深める!よく出る問題を反復学習することで、合格に直結するチカラが身に付く! |