ネットワーク

水平垂直パリティチェックとは

2024年7月24日

水平垂直パリティチェック

パリティチェックとは

パリティチェックとは、データの誤り検出方式のひとつで、送信するビット列に対して、パリティビットと呼ばれるビットを付加し、データの誤りを検出する方式のことです。

ネットワーク上を流れるデータは、途中でノイズなどの影響で波形が変わり、通信相手に正しいデータが届かないことがあります。そこで、パリティチェックやCRC(巡回冗長検査)などを用いて、誤りを検出したり、訂正したりします。

パリティビットを付加する方法には「偶数パリティ」と「奇数パリティ」があります。

次の図は「偶数パリティ」のイメージ例です。

偶数パリティ

偶数パリティは、ビット列の中の「1」の数が「偶数」になるように、パリティビットをセットします。

送信側で「1」の数が「偶数」になるように設定し、受信側は「1」の数を確認します。「1」の数を確認した結果、「1」の数が「偶数」であれば正、「奇数」であれば誤りと判断します。

パリティビットでできることは「1ビットの誤り」を検出するだけで、偶数個のビット誤りは検出できません。また、どのビットが誤りかは判断できないので、誤り訂正はできません。

水平垂直パリティチェックとは

パリティビットには、水平方向に付加する「水平パリティ」と、垂直方向に付加する「垂直パリティ」があります。

そして、水平と垂直の2方向にパリティビットを付加するのが「水平垂直パリティ」です。

次の図は、「水平垂直パリティ」のイメージ例です。(※下記例は偶数パリティを使用)

水平パリティと垂直パリティ

水平垂直パリティチェックは、1ビットの誤りであれば、位置が特定できるため、誤りを訂正できます

例えば、送信側で「1」の数が「偶数」(※偶数パリティを使用)になるように、パリティビットを設定し、データを送信したところ、次の図のように、1ビットが反転(0→1に反転)したとします。

誤り検知の例_1ビット

受信側は「1」の数が「偶数」であるか確認します。

「1」の数を確認した結果、次のように特定の「行」と「列」に誤りを検出しました。

誤り検知の例_1ビットを訂正

誤り検出をした「行」と「列」の交わった個所が、誤りであると位置が特定できました。

水平と垂直のパリティチェックの結果、誤りを検出、さらに誤りの位置が特定できたため、誤りを訂正します。

2ビット以上の誤りがある場合は、位置が特定できないので、誤り訂正できません。

helpful