誤り検出・訂正とは(全体像)
データをやり取り(通信)したり保存(記録)したりするとき、電気的なノイズや部品の故障で、0が1に、1が0に化けてしまうことがある。これがビット誤りだ。
そこで、元のデータに少しだけ余分なビット(検査ビット)を付け足しておく。受け取った側はそれを使って「途中で化けていないか」をチェックする。これが誤り検出・訂正の基本的な考え方だ。
ここで決定的に大事なのが、「検出」と「訂正」は別物だということ。
- 検出 … 「どこかが間違っている」と気づくだけ。直せない(送り直してもらう)。
- 訂正 … 間違いに気づいたうえで、正しい値に直すこともできる。
訂正のほうが高機能なぶん、付け足すビットも多く必要になる。
詳しく:この使い分け表だけ覚えれば戦える
ここが記事の心臓部。代表的な手法を、検出だけか/訂正までできるかで並べると一気に整理できる。
誤り検出・訂正の手法
| 手法 | できること | 主な使いみち |
|---|---|---|
| パリティチェック | 1ビット誤りの検出だけ | もっとも簡単な確認 |
| ハミング符号 | 1ビット誤りの訂正・2ビット検出 | メモリのECC(サーバー) |
| CRC | 多くのビット誤りの検出(訂正は不可) | Ethernet・ZIP・USB |
| リードソロモン符号 | バースト誤りの訂正 | CD・QRコード・DVD |
ひとつずつ見ると、パリティチェックは1ビットを付け足して全体の1の個数を偶数(または奇数)にそろえる方法。崩れていれば「誤りあり」とわかるが、どこが誤りかは分からず、直せない。
ハミング符号は検査ビットを複数付けることで、どのビットが化けたかまで特定して直せる(1ビットなら訂正、2ビットなら検出)。サーバー用メモリのECCで使われている。「最小ハミング距離が3」という言葉も出るが、これは「正しい符号どうしが3ビット以上離れているので、1ビットのズレなら近いほうに直せる」という意味だ。
CRCは割り算(多項式の除算)の考え方で検査ビットを作り、多くのビットの誤りを検出できる。ただし検出専門で訂正はしない。Ethernetのフレームチェックやファイルのチェックで活躍する。
つまり、「CRCは検出だけ・訂正はしない」が定番のひっかけポイントだ。
その他・発展(軽く押さえる)
| 手法 | ひとこと |
|---|---|
| LDPC・ターボ符号 | 5G・衛星通信など現代の高性能通信で活躍 |
わかりやすく言い換えると
要するに、誤り検出・訂正は「荷物に検品タグを付けて運ぶ」イメージだ。
①パリティ … 「個数が合わない、どこか変だ」と気づくだけの簡易チェック(直せない)
②ハミング … 「3番目の箱が壊れてる」と特定して直せるしっかり版
③CRC … 大きな荷物でも「途中で壊れた」と高い精度で気づけるけれど、直すのは送り直し
つまり「気づくだけ」か「直せる」かで分かれる、と覚えれば迷わない。
試験のツボ
🔴 一番出る:検出だけか/訂正までか
①パリティ=1ビット誤りの検出だけ(訂正不可)
②ハミング=1ビット訂正・2ビット検出
③CRC=多くのビット誤りの検出だけ(訂正不可)
🔴 次に出る:用途とのひもづけ
①ハミング=メモリのECC
②CRC=Ethernet・ZIP
③リードソロモン=CD・QRコード
🟡 押さえると安定:ハミング距離の考え方
①正しい符号どうしが離れているほど誤りに強い
②最小距離3なら1ビットの誤りを訂正できる
よくある間違い
①「パリティチェックで誤りを訂正できる」→ ✗ パリティは1ビット誤りの検出だけ。どこが誤りかは分からず直せない。
②「CRCは誤りを訂正できる」→ ✗ CRCは検出専門。訂正したいならリードソロモンなどを使う。
③「ハミング符号は誤りに気づくだけで直せない」→ ✗ ハミングは1ビットなら訂正までできるのが特長。
試験での出題パターン
実際の問題でたしかめてみよう。
オリジナル問題1(パリティチェック)
パリティチェックに関する次の記述のうち、正しいものはどれか。
- パリティチェックは複数ビットの誤りであっても確実に訂正できる高機能なしくみである
- パリティチェックは1ビットの誤りを検出できるが、誤りを訂正することはできない
- パリティチェックは検査ビットを使わず、データ本体だけで誤りを見つけられる
- パリティチェックは誤りの位置を特定し、その場で正しい値へと書き換えられる
解答は 2 だぜ。
パリティチェックは1ビットを付け足して1の個数を偶数(または奇数)にそろえる方法。1ビットの誤りに気づける(検出)が、どこが誤りかは分からず訂正はできない。
選択肢1は「複数ビットを訂正」が誤りで高機能すぎる。選択肢3は「検査ビットを使わない」が誤り。選択肢4は「位置特定して書き換える」で、これはハミングの能力だぜ。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✗ | 複数ビットの訂正はできない |
| 2 | ✓ | 1ビット検出のみ・訂正不可で正しい |
| 3 | ✗ | 検査ビットを付け足して使う |
| 4 | ✗ | 位置特定・訂正はハミングの能力 |
オリジナル問題2(手法と能力の対応)
誤り検出・訂正の手法に関する次の記述のうち、正しいものはどれか。
- CRCは多くのビット誤りを訂正でき、Ethernetでは訂正用として使われている
- ハミング符号は誤りの検出だけを行い、訂正はできないので送り直しが必要だ
- リードソロモン符号は1ビットの誤りだけしか扱えず、CDには使われていない
- ハミング符号は1ビットの誤りを訂正でき、メモリのECCなどで使われている
解答は 4 だぜ。
ハミング符号は1ビットの誤りを訂正でき(2ビットは検出)、サーバー用メモリのECCで使われている。検査ビットを複数付けて、化けた位置まで特定できるのが強みだ。
選択肢1はCRCを「訂正できる」としている点が誤り(CRCは検出専門)。選択肢2はハミングを「検出だけ」とする誤り。選択肢3はリードソロモンを過小評価していて、CD・QRで活躍するぜ。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✗ | CRCは検出専門で訂正はしない |
| 2 | ✗ | ハミングは1ビット訂正までできる |
| 3 | ✗ | リードソロモンはCD・QRで使われる |
| 4 | ✓ | 1ビット訂正・ECCで使用で正しい |
オリジナル問題3(用途の対応)
誤り検出・訂正の用途に関する次の記述のうち、正しいものはどれか。
- CRCはCDやQRコードのキズによる誤りを訂正するために主に使われている
- パリティチェックは5Gや衛星通信の高性能な誤り訂正の中心となっている
- リードソロモン符号は連続した誤りに強く、CDやQRコードで使われている
- ハミング符号はZIPファイルやUSB通信の誤り検出に最も広く使われている
解答は 3 だぜ。
リードソロモン符号は、続けて起きる誤り(バースト誤り)に強く、キズに弱いCD・QRコード・DVDで使われている。
選択肢1はCRCをCD用としているが、CD・QRはリードソロモンだ。選択肢2の5G・衛星はLDPCやターボ符号の領域でパリティではない。選択肢4のZIP・USBはCRCの用途で、ハミングではないぜ。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✗ | CD・QRはリードソロモン |
| 2 | ✗ | 5G・衛星はLDPC・ターボ符号 |
| 3 | ✓ | バースト誤りに強くCD・QRで使用 |
| 4 | ✗ | ZIP・USBはCRCの用途 |
まとめ
押さえどころ
- 🔴 検出だけか訂正までか = パリティ(検出だけ)/ハミング(1ビット訂正)/CRC(検出だけ・多ビットに強い)。
- 🔴 用途 = ハミング=メモリECC、CRC=Ethernet・ZIP、リードソロモン=CD・QRコード。
- 🟡 ハミング距離 = 正しい符号どうしが離れているほど誤りに強い。最小距離3で1ビット訂正。
次に学ぶ
- ハフマン符号化 ── 同じ「符号」でもこちらはデータ圧縮が目的。誤りを直す符号と、データを縮める符号を対にすると整理できる。
- ネットワークの基礎 ── CRCがどこで使われるか(Ethernetのフレーム)を学ぶと、誤り検出が実際の通信でどう働くか見えてくる。
執筆: SikakuQuest編集部