最終更新日:2026年8月28日
fe fe-technology network error-detection
まず結論
パリティチェックとは、データに1ビットの検査用ビットを付け、1 の個数が偶数か奇数かを利用して誤りを検出する方式です。
FE試験では、次のように切り分けます。
偶数パリティ
→ データとパリティビットを合わせた「1」の個数を偶数にする
奇数パリティ
→ データとパリティビットを合わせた「1」の個数を奇数にする
偶数パリティなら、元データの 1 の個数を見て次のように判断します。
元データの「1」が偶数
→ パリティビットは0
元データの「1」が奇数
→ パリティビットは1
重要なのは、元データではなく、追加後の全体を偶数または奇数にそろえることです。
そして、もう一つ重要です。
「パリティビットを付ける」=「必ず
1を付ける」ではありません。
パリティビットは必ず1ビット追加しますが、その値は 0 の場合も 1 の場合もあります。
直感的な説明
パリティチェックは、荷物の個数が合っているかを「偶数・奇数」だけで確認するイメージです。
たとえば、偶数パリティで次のデータを送るとします。
元データ:1011
1の個数:3個
1 が3個では奇数なので、パリティビット 1 を追加して4個にします。
1011 + 1
→ 1の個数は4個
一方、元データの 1 がすでに偶数個なら、偶数を維持するためにパリティビット 0 を追加します。
元データ:0110000
1の個数:2個
パリティビット:0
↓
00110000
この場合も、パリティビット自体は追加されています。値が 0 なので、16進数へ戻すと元と同じ値に見えることがあります。
受信側でも 1 の個数を数えます。偶数になるはずなのに奇数なら、途中でビットが変わった可能性があると判断します。
ただし、単純なパリティチェックで分かるのは、基本的に
誤りがありそうかどうか
です。どのビットが誤ったかまでは分かりません。
定義・仕組み
パリティビットとは
パリティビットは、元データへ追加する1ビットの検査用ビットです。
元のデータ
+
パリティビット1ビット
=
送信するデータ
ここでの「1ビット」は、値が1という意味ではありません。
パリティビットの値
→ 0 または 1
7ビット文字コードへ追加する場合は、全体が8ビットになります。
7ビットの文字コード
+
1ビットのパリティ
=
8ビット
偶数パリティと奇数パリティ
| 種類 | 追加後の状態 |
|---|---|
| 偶数パリティ | 1 の総数を偶数にする |
| 奇数パリティ | 1 の総数を奇数にする |
判断表は次のとおりです。
| 元データの1の個数 | 偶数パリティ | 奇数パリティ |
|---|---|---|
| 偶数 | 0を追加 | 1を追加 |
| 奇数 | 1を追加 | 0を追加 |
「偶数のデータにパリティビットを追加する」はどう考える?
ここはFEで混同しやすいところです。
偶数パリティは、元データが偶数だからパリティビットを付ける方式ではありません。
偶数パリティ
= 追加後の「1」の総数を偶数にする方式
したがって、元データの 1 が偶数なら 0、奇数なら 1 を追加します。
元が偶数
→ 0を追加して偶数のまま
元が奇数
→ 1を追加して偶数にする
英語なら、Make the total number of 1s even. と考えると整理しやすいです。
16進数で出題されたときの手順
文字コードが16進数で示された場合は、一度2進数へ変換します。
16進数1桁は、2進数4ビットに対応します。
| 16進数 | 2進数 |
|---|---|
| 0 | 0000 |
| 3 | 0011 |
| 7 | 0111 |
| A | 1010 |
| F | 1111 |
16進数と2進数の変換に不安がある場合は、16進数と2進数の変換も確認してください。
7ビット文字コードへ偶数パリティを付ける例
16進数 5A を7ビット文字コードとして扱う例を考えます。
まず2進数へ変換します。
5A
→ 0101 1010
7ビット部分は、先頭を除いた 1011010 です。
1011010
この中の 1 は4個なので、すでに偶数です。したがって、先頭へ追加するパリティビットは 0 です。
0 + 1011010
= 01011010
= 5A
元データの 1 が奇数なら、先頭へ 1 を付けます。
16進数 30・3F・7A の例
7ビット文字コードの先頭へ偶数パリティを付ける場合を考えます。
| 文字コード | 7ビット部分 | 1 の数 |
パリティ | 8ビット結果 |
|---|---|---|---|---|
30 |
0110000 |
2 | 0 |
00110000 = 30 |
3F |
0111111 |
6 | 0 |
00111111 = 3F |
7A |
1111010 |
5 | 1 |
11111010 = FA |
30 と 3F は、パリティビットとして 0 が追加されるため、16進数では値が変わりません。
7A は 1 が5個で奇数なので、先頭へ 1 を追加して偶数にします。その結果、FA になります。
試験での解き方
1. 偶数パリティか奇数パリティか確認する
2. 16進数を2進数へ直す
3. 元の7ビットにある「1」を数える
4. パリティビットを先頭へ付ける
5. 8ビットを16進数へ戻す
試験中は、偶数パリティなら次の1行を思い出せば十分です。
追加後の「1」の総数を偶数にする
誤り検出の限界
1ビットだけ反転すると、1 の個数の偶奇が変わるため、誤りを検出できます。
一方、2ビットが同時に反転すると、偶奇が元と同じになる場合があります。
1ビット誤り
→ 検出できる
2ビット誤り
→ 見逃す場合がある
より一般化すると、単純なパリティチェックでは次のように考えます。
| 誤りの状態 | 検出できる? |
|---|---|
| 1ビット誤り | 検出できる |
| 奇数個のビット誤り | 検出できる |
| 偶数個のビット誤り | 見逃すことがある |
| 単純な垂直パリティ | 基本的に訂正はできない |
| 垂直+水平パリティ | 1ビット誤りの位置を特定できる |
ここで重要なのは、奇数パリティと偶数パリティで誤り検出能力が変わるわけではないことです。
奇数パリティ / 偶数パリティ
→ 正常時の「1」の個数をどうそろえるかの違い
奇数個 / 偶数個のビット誤り
→ 実際に何ビット反転したかの違い
この2つの「奇数・偶数」を混同しないようにします。
垂直パリティと水平パリティ
| 種類 | 見方のイメージ |
|---|---|
| 垂直パリティ | 文字やデータ単位ごとにパリティを付ける |
| 水平パリティ | 複数データを並べ、列方向にもパリティを付ける |
行方向と列方向の両方へパリティを付ける垂直水平パリティでは、異常になった行と列の交点から誤り位置を絞り込めます。
パリティが合わない行
+
パリティが合わない列
↓
交点のビットを特定
単純な1方向のパリティは基本的に誤り検出、2方向のパリティは誤り位置の特定に使える、と整理します。
公式の出題範囲やシラバスは、IPA:基本情報技術者試験から確認できます。
どんな場面で使う?
データ通信
通信中にビットが変化していないかを簡単に確認するときに使います。
送信側
→ パリティビットを付ける
受信側
→ 1の個数を確認する
メモリや装置内の簡易チェック
メモリや装置内部で、データの誤りを簡単に検出する用途でも使われます。
科目Aの計算問題
科目Aでは、7ビット文字コードにパリティビットを付け、結果を16進数で答える問題があります。
この場合は、計算量よりも次の2点が重要です。
追加後の全体で偶数・奇数をそろえる
先頭のパリティビットを含めて8ビットへ戻す
CRC・チェックサム・ハミング符号との切り分け
| 方式 | 判断の合図 |
|---|---|
| パリティチェック | パリティビット、1の個数の偶数・奇数 |
| CRC | 生成多項式、割った余り |
| チェックサム | 合計値、総和、補数 |
| ハミング符号 | 1ビット誤りの訂正、誤り位置の特定 |
試験では、
1ビットの検査用ビット
→ パリティ
生成多項式と余り
→ CRC
誤りを訂正する
→ ハミング符号
と切り分けます。
よくある誤解・混同
❌ パリティビットを追加する = 1 を追加する
違います。
パリティビットは1ビット分の領域を追加するという意味で、値は 0 または 1 です。
元データの1が偶数
→ 偶数パリティでは0を追加
元データの1が奇数
→ 偶数パリティでは1を追加
0 を追加した場合も、パリティビットは追加されています。
❌ 偶数パリティでは、1が偶数個なら1を付ける
逆です。
偶数パリティは、追加後の 1 の総数を偶数にする方式です。
元が偶数
→ 0を付ける
元が奇数
→ 1を付ける
❌ 奇数・偶数は、検出できる誤りビット数を表す
違います。
奇数パリティ・偶数パリティの奇数・偶数は、正常時の 1 の個数を表します。
奇数パリティ
→ 正常時の1の総数を奇数にする
偶数パリティ
→ 正常時の1の総数を偶数にする
どちらを使っても、単純なパリティチェックの誤り検出能力は同じです。
❌ 16進数のまま1の個数を数える
16進数の見た目だけでは判断できません。
必ず2進数へ変換します。
A
→ 1010
→ 1は2個
❌ 8ビット全部が元データである
問題文が「7ビット文字コードに1ビット追加」としている場合、元データは7ビットです。
7ビットのデータ
+
1ビットのパリティ
=
8ビット
❌ パリティチェックで誤りを訂正できる
単純なパリティチェックでは、誤りがあることは分かっても、どのビットが誤ったかは分かりません。
検出できる
≠
訂正できる
ただし、行と列の両方向にパリティを付ける垂直水平パリティでは、1ビット誤りの位置を特定して訂正できます。
❌ 全ての複数ビット誤りを検出できる
2ビットが同時に反転すると、1 の個数の偶奇が変わらない場合があります。
単純なパリティチェックは万能ではありません。
確認問題(FE試験対策)
7ビット文字コード 0111111 の先頭へ、1ビットの偶数パリティを追加すると、8ビットの値はどれか。
- ア.
00111111 - イ.
10111111 - ウ.
01111110 - エ.
11111110
▶ クリックして答えと解説を見る(ここを開く)
正解:ア
解説
元データ 0111111 の 1 は6個です。
すでに偶数なので、先頭へ付けるパリティビットは 0 です。
0 + 0111111
= 00111111
👉 判断ポイント
パリティビットを付けるからといって、必ず 1 を付けるわけではありません。
偶数パリティでは、追加後の 1 の総数が偶数になるよう、0 または 1 を選びます。
まとめ(試験直前用)
- 偶数パリティは、追加後の
1の総数を偶数にする - 奇数パリティは、追加後の
1の総数を奇数にする - パリティビットは必ず1ビット追加するが、値は
0または1 - 偶数パリティでは、元の
1が偶数なら0、奇数なら1 - 奇数パリティと偶数パリティで、単純なパリティチェックの誤り検出能力は変わらない
- 1ビット誤りや奇数個のビット誤りは検出できる
- 偶数個のビット誤りは見逃すことがある
- 16進数の問題では、2進数へ直して
1を数える - 7ビットデータへ1ビット追加すると、全体は8ビットになる
- 単純なパリティチェックは誤り検出であり、基本的に訂正はできない
- 生成多項式ならCRC、1ビット訂正ならハミング符号を疑う
関連記事
誤り制御方式をまとめて切り分けたい場合は、次の記事も確認してください。