FE EXAM

偶数パリティ(even parity)

1の個数が偶数になるよう検査ビットを付加するパリティ方式

INTERACTIVE VISUALIZATION
データビット
偶数パリティビット
誤りビット
データの1の数
4偶数
パリティビット P
0
全体の1の数
4(偶数)
受信判定
誤りなし
データビット(クリックで反転)
誤り注入(受信ビットを反転)
プリセット
① パリティビットの決定(XORで計算)
1
D1
0
D2
1
D3
1
D4
0
D5
0
D6
1
D7
0
P
P = 1 XOR 0 XOR 1 XOR 1 XOR 0 XOR 0 XOR 1
  = 0 (データの1が4個=偶数なので P=0
② 受信側:1の数が偶数か確認
1
D1
0
D2
1
D3
1
D4
0
D5
0
D6
1
D7
0
P
受信フレームの1の個数 = 4偶数
✓ 偶数を保っている → 誤りなしと判定
解説

📌
偶数パリティとは

1の個数を「偶数」に揃える101100111が4個+1個 → 合計4個※ データの1が奇数3個ならP=1で偶数に

偶数パリティ(even parity)とは、データとパリティビット(=検査用に付け足す1ビット)を合わせた 1の個数が必ず偶数になるようにパリティビットを決める方式です。「全体の1の数を偶数にする」という1つのルールだけで誤りを見つけます。

身近な例で言うと、2人組(ペア)で席に着く約束に似ています。全員がペアになっていれば人数は偶数のはず。もし1人余っていたら「誰かいなくなった or 増えた」とすぐ分かります。偶数パリティも同じで、「1は必ず偶数個」という約束が崩れていたら、途中でビットが化けた(誤った)と判断します。

上のツールでデータビットをクリックすると、1の個数が偶数になるようパリティビット(P)がリアルタイムに決まります。データの1が偶数個ならP=0、奇数個ならP=1になる様子を確認してください。

🧮
パリティビットの決め方

全ビットのXOR = パリティビット1⊕0⊕1⊕1⊕0⊕0⊕1 = 00⊕0=0, 0⊕1=1 のルールで畳み込むXORの結果がそのまま偶数パリティ

偶数パリティビットの決め方はとても簡単で、次の2通りで考えられます。どちらも同じ結果になります。
個数で考える:データの1が偶数個ならP=0、奇数個ならP=1
XORで考える:全データビットを XOR(排他的論理和)した値がそのままP

XOR(排他的論理和)は「2つのビットが違えば1、同じなら0」という演算です。0⊕0=0, 0⊕1=1, 1⊕0=1, 1⊕1=0。これを左から順に畳み込むと、最終結果は「1が奇数個なら1、偶数個なら0」になります。つまりXORの結果=偶数パリティビットなのです。回路では1個のXOR素子を連ねるだけで作れるため、ハードウェアで高速に計算できます。

計算例として 1011001 を見てみましょう。1の個数は4個(偶数)なのでP=0。XORで計算しても 1⊕0⊕1⊕1⊕0⊕0⊕1 = 0 となり一致します。送信フレームは 10110010 となり、全体の1は4個=偶数です。

🔍
誤り検出の手順

正常101100101が4個=偶数 ✓1ビット誤り100100101が3個=奇数 ✗偶数のはずが奇数 → 誤りと判定

受信側がやることは「届いたフレーム(データ+パリティ)の1の個数を数え、偶数かどうか確認する」だけです。手順は次のとおりです。
手順1:受信フレーム全体の1の個数を数える
手順2:偶数なら「誤りなし」、奇数なら「誤りあり」と判定
手順3:誤りありなら、送信側に再送を要求する(訂正はできない)

送信時に「必ず偶数個」にしてあるので、1ビットだけ化けると個数が奇数になり、約束が破れたとすぐ分かります。上のツールで「誤り注入」を1つ選ぶと、受信側の1の個数が奇数になり「誤り検出!」と表示されるのを確認できます。

ただし注意点として、2ビット同時に誤ると1の個数は偶数のままなので見逃します。偶数パリティは奇数個の誤りを検出でき、偶数個の誤りは検出できません。また、誤りの検出はできても訂正はできません。

関連コンテンツ

偶数パリティ | Vizigo