デジタルデータは送受信をする際、「0なら0」「1なら1」とはっきりとしたデータが流れるわけではありません。
「この範囲の波形は0」「この範囲の波形は1」と置き換えることにより、ビットの内容をやりよりしています。
しかし、デジタルデータはノイズなどの影響により誤ったデータを送受信してしまうことがあります。
このデータの誤りを100%防ぐ手段はありません。
そこで、パリティチェックやCRC(巡回冗長検査)などを用い誤りを検出したり、ていお制したりします。
パリティチェック
パリティチェックとは、「受信した符号が正しいのか、間違っているのかを判別する方法」です。
この符号はパリティビットと呼ばれる検査用のビットを付加して、送信します。
パリティビットには「偶数パリティ」と「奇数パリティ」の2種類があります。
偶数パリティ 送信符号の中の1の数が偶数個になるように検査ビットを付け加えて行うパリティチェック
奇数パリティ 送信符号の中の1の数が奇数個になるように検査ビットを付け加えて行うパリティチェック
例えば、偶数パリティで「1000001」という符号を送る場合を考えましょう。
このとき検査ビットは「0」なので、送信符号は「0100001」になります。この符号を送信したら、何らかの外的要因により「01010001」という符号に変わってしまいました。
受信側は偶数パリティであることを知っているので、符号の中の1の数が偶数個かを確かめますが、奇数個しかありません。
そのため、誤りを検出できるわけです。
ただし、パリティチェックで可能なのは、1ビットの誤りを検出するだけです。
偶数個の誤りや、どのビットの誤りかを検出することはできません。
水平垂直パリティチェック
パリティビットではどの方向に付加するかによって垂直パリティと水平パリティにわかれます。
全体をブロックとみなして、垂直方向と、水平右方向のパリティにわかれます。
縦横から検出できるので、1ビットの誤りであれば位置を特定でき、誤り訂正を行えます。
ただし、複数の誤りになると、位置の特定ができなくなるので、その場合は訂正できません。
CRC(巡回冗長検査)
CRCとはCyclic Redundancy Checkの略で、ビット列を生成多項式とよばれる計算式で割り、その余りをチェック用のデータとして付加する方法です。 送信側は、計算で得られた余りを、元々のビット列にくっつけて送信データとします。 こうする事により、そのデータは生成多項式で割り切れるはずの数に変わります。 受信側は、送信側と同一の生成多項式を使って、受信データを割り算します。 そうする事により、問題がなければ、割り切れます。
この方式では、データの誤り訂正はできませんが、複数ビットの誤りを検出することができます
参考書籍
キタミ式イラストIT塾 基本情報技術者 令和03年
令和03年 イメージ&クレバー方式でよくわかる 栢木先生の基本情報技術者教室 情報処理技術者試験
令和03年 基本情報技術者 合格教本 情報処理技術者試験
コメント