誤り検出・訂正(ハミング・CRC)とは?|基本情報技術者試験で押さえる本質をやさしく解説

公開: 更新: カテゴリ: テクノロジ系

30秒で結論

誤り検出・訂正とは(全体像)

データをやり取り(通信)したり保存(記録)したりするとき、電気的なノイズや部品の故障で、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 パリティチェックの能力

パリティチェックに関する次の記述のうち、正しいものはどれか。

  1. パリティチェックは複数ビットの誤りであっても確実に訂正できる高機能なしくみである
  2. パリティチェックは1ビットの誤りを検出できるが、誤りを訂正することはできない
  3. パリティチェックは検査ビットを使わず、データ本体だけで誤りを見つけられる
  4. パリティチェックは誤りの位置を特定し、その場で正しい値へと書き換えられる
シーピードラ
シーピードラ 解答・解説

解答は 2 だぜ。

パリティチェックは1ビットを付け足して1の個数を偶数(または奇数)にそろえる方法。1ビットの誤りに気づける(検出)が、どこが誤りかは分からず訂正はできない

選択肢1は「複数ビットを訂正」が誤りで高機能すぎる。選択肢3は「検査ビットを使わない」が誤り。選択肢4は「位置特定して書き換える」で、これはハミングの能力だぜ。

選択肢判定理由
1複数ビットの訂正はできない
21ビット検出のみ・訂正不可で正しい
3検査ビットを付け足して使う
4位置特定・訂正はハミングの能力

オリジナル問題2(手法と能力の対応)

📝 オリジナル問題 2 各手法の能力

誤り検出・訂正の手法に関する次の記述のうち、正しいものはどれか。

  1. CRCは多くのビット誤りを訂正でき、Ethernetでは訂正用として使われている
  2. ハミング符号は誤りの検出だけを行い、訂正はできないので送り直しが必要だ
  3. リードソロモン符号は1ビットの誤りだけしか扱えず、CDには使われていない
  4. ハミング符号は1ビットの誤りを訂正でき、メモリのECCなどで使われている
シーピードラ
シーピードラ 解答・解説

解答は 4 だぜ。

ハミング符号は1ビットの誤りを訂正でき(2ビットは検出)、サーバー用メモリのECCで使われている。検査ビットを複数付けて、化けた位置まで特定できるのが強みだ。

選択肢1はCRCを「訂正できる」としている点が誤り(CRCは検出専門)。選択肢2はハミングを「検出だけ」とする誤り。選択肢3はリードソロモンを過小評価していて、CD・QRで活躍するぜ。

選択肢判定理由
1CRCは検出専門で訂正はしない
2ハミングは1ビット訂正までできる
3リードソロモンはCD・QRで使われる
41ビット訂正・ECCで使用で正しい

オリジナル問題3(用途の対応)

📝 オリジナル問題 3 手法と用途の対応

誤り検出・訂正の用途に関する次の記述のうち、正しいものはどれか。

  1. CRCはCDやQRコードのキズによる誤りを訂正するために主に使われている
  2. パリティチェックは5Gや衛星通信の高性能な誤り訂正の中心となっている
  3. リードソロモン符号は連続した誤りに強く、CDやQRコードで使われている
  4. ハミング符号はZIPファイルやUSB通信の誤り検出に最も広く使われている
シーピードラ
シーピードラ 解答・解説

解答は 3 だぜ。

リードソロモン符号は、続けて起きる誤り(バースト誤り)に強く、キズに弱いCD・QRコード・DVDで使われている。

選択肢1はCRCをCD用としているが、CD・QRはリードソロモンだ。選択肢2の5G・衛星はLDPCやターボ符号の領域でパリティではない。選択肢4のZIP・USBはCRCの用途で、ハミングではないぜ。

選択肢判定理由
1CD・QRはリードソロモン
25G・衛星はLDPC・ターボ符号
3バースト誤りに強くCD・QRで使用
4ZIP・USBはCRCの用途

まとめ

押さえどころ

次に学ぶ


執筆: SikakuQuest編集部

勉強は、クエストになった。

資格の勉強を、冒険に変えるRPG学習アプリ

App Storeで見る