【はみんぐふごう】

ハミング符号 とは?

💡 エラーを見つけるだけじゃなく「直す」までやってくれる符号
📌 このページのポイント
ハミング符号(7,4)の仕組み データ 4ビット D1 D2 D3 D4 符号化 ハミング符号 7ビット P1 P2 D1 P4 D2 D3 D4 位置1 位置2 位置3 位置4 位置5 位置6 位置7 パリティビット(2^n位置) データビット エラー訂正の仕組み 1. パリティ検査 P1, P2, P4 を検査 2. エラー位置特定 検査結果 = 101 → 位置5 3. ビット反転 位置5を訂正!
ハミング符号(7,4)の符号化とエラー訂正フロー
ひよこ ひよこ

ハミング符号って何?エラーを直せるってほんと?

ペンギン先生 ペンギン先生

本当だよ。普通のパリティビットは「どこかが壊れた」しか分からないけど、ハミング符号はパリティビットを複数の位置に配置することで「何ビット目が壊れたか」まで特定できるんだ。だから自動で修復もできるよ。

ひよこ ひよこ

パリティビットをたくさん使うってこと?どう配置するの?

ペンギン先生 ペンギン先生

パリティビットは2のべき乗の位置(1, 2, 4, 8, …)に置くのがルールだよ。例えば7ビットのハミング符号なら、位置1・2・4がパリティビットで、位置3・5・6・7がデータビット。各パリティビットは特定のビットグループの偶奇をチェックするんだ。

ひよこ ひよこ

エラーの位置はどうやって分かるの?

ペンギン先生 ペンギン先生

パリティビットの検査結果を並べると、エラー位置が二進数で分かるんだ。例えばパリティ1がNG、パリティ2がOK、パリティ4がNGなら「101」=5番目のビットがおかしい、と特定できる。すごく賢い仕組みだよね。

ひよこ ひよこ

2ビット以上壊れたらどうなるの?

ペンギン先生 ペンギン先生

基本のハミング符号は1ビット訂正のみだけど、全体パリティビットを1つ追加した「SECDED」という拡張版なら、1ビット訂正+2ビット検出ができるよ。ECCメモリはこのSECDED方式を使っているんだ。

ひよこ ひよこ

ECCメモリ以外にも使われてるの?

ペンギン先生 ペンギン先生

QRコードの誤り訂正にもハミング符号の考え方が応用されているし、通信プロトコルやストレージシステムでも広く使われているよ。ハミング符号は誤り訂正符号の出発点で、ここから発展してリードソロモン符号やLDPC符号など、より強力な符号が生まれたんだ。

ひよこ ひよこ

データの冗長性を増やして信頼性を上げるってことなんだね!

ペンギン先生 ペンギン先生

そのとおりだよ。ハミング符号は「最小限の冗長ビットで最大限のエラー訂正」を実現した、効率のいい符号なんだ。情報理論の世界では「ハミング距離」という概念も重要で、2つの符号語がどれだけ違うかを測る指標として色々な場面で使われているよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「ハミング符号」って出てきたら「1ビットの誤りを自動で見つけて直せる仕組み」と思えればだいたいOK!
📖 おまけ:英語の意味
「Hamming Code」 = ハミングが考案した符号
💬 ベル研究所のリチャード・ハミングが、コンピュータの計算中にエラーが起きるたび手作業で修正するのに嫌気がさして考案したんだよ
← 用語集にもどる