ハミング符号の計算(エンコード・デコード・誤り訂正)
データビットをハミング符号((7,4)、(15,11)、任意の長さ、偶奇パリティ、SECDED)でエンコードするか、受信語のシンドロームと訂正結果を求めます。
位置は左から1番で数えます。パリティビットは1・2・4・8…の位置にあり、パリティビットPは、番号にそのビットが立っているすべての位置を検査します。
| パリティビット | 位置 | 検査する位置 | その位置のビット | 検査 |
|---|---|---|---|---|
| P1 | 1 | 1, 3, 5, 7 | 0101 | 成立 |
| P2 | 2 | 2, 3, 6, 7 | 1111 | 成立 |
| P4 | 4 | 4, 5, 6, 7 | 0011 | 成立 |
| 位置 | 2進数 | 役割 | ビット |
|---|---|---|---|
| 1 | 001 | P1 | 0 |
| 2 | 010 | P2 | 1 |
| 3 | 011 | D1 | 1 |
| 4 | 100 | P4 | 0 |
| 5 | 101 | D2 | 0 |
| 6 | 110 | D3 | 1 |
| 7 | 111 | D4 | 1 |
ハミング符号は、データのブロックに数個のパリティビットを加え、反転したビット1つを見つけて訂正できるようにします。誤り訂正符号の定番の例で、今もECCメモリ(SECDEDの派生形)で使われています。この計算ツールは、データビットを符号語にエンコードしたり、受信した語を検査したりします。シンドロームを計算し、どのビットが誤っているかを示し、訂正してデータを取り出します。各パリティビットがどの位置を検査するかを示す表も表示します。
使い方
- エンコードか検査かを選びます。
- データビット(エンコード)または受信した語(検査)を入力します。
- 符号のサイズを選ぶか長さに合わせ、偶数・奇数パリティを選びます。
- 2ビット誤りまで検出したい場合は、SECDED用の全体パリティビットを追加します。
計算式
位置2ᵗのパリティビット = t番目のビットが立っているすべての位置のXOR · シンドローム = 1のビットの位置すべてのXOR = 誤りの位置
パリティビットがr個あると、符号語はn = 2ʳ − 1個の位置を持ち、n − r個のデータビットを運びます。(7,4)、(15,11)、(31,26)がそうです。ほかの長さでは、2ʳ ≥ k + r + 1を満たす最小のrを使います。位置は左から1番で数え、データビットは2のべき乗でない位置を順に埋めます。奇数パリティではすべての検査が反転します。SECDEDは、語全体のパリティを持つビットを1つ加えます。シンドロームが0でなく全体パリティが合わなければ訂正可能な1ビット誤り、シンドロームが0でなく全体パリティが合っていれば誤りは2つです。
計算例
1011をハミング(7,4)でエンコードすると、データは3・5・6・7番の位置に入り、P1 = 1⊕0⊕1 = 0、P2 = 1⊕1⊕1 = 1、P4 = 0⊕1⊕1 = 0なので、0110011になります。5番のビットが反転して(0110111)、1のビットが2・3・5・6・7番の位置にあると、2⊕3⊕5⊕6⊕7 = 5となり、5番のビットを訂正してデータ1011を復元します。
よくある質問
ハミング符号で2つの誤りを訂正できますか?
いいえ。基本の符号が訂正できるのは1つの誤りで、誤りが2つあるとシンドロームは間違った位置を指します。拡張(SECDED)符号はビットを1つ加えて、少なくとも2つの誤りは検出できるようにします。
パリティビットが1・2・4・8番の位置にあるのはなぜですか?
それらの位置は2進数で1が1つだけなので、各パリティビットが位置番号の異なる2進の桁を検査します。不成立の検査を足し合わせると、誤りの位置が2進数で現れます。
偶数パリティと奇数パリティのどちらを使いますか?
どちらも同じように動作し、奇数パリティはすべての検査を反転するだけです。教科書では通常、偶数パリティを使います。
出典
最終更新:
この入力内容のページアドレス: https://kakao.mobile/ja/tools/hamming-code-calculator/
このツールを引用する
kakaoCalc. (2026, November 8). ハミング符号の計算(エンコード・デコード・誤り訂正). https://kakao.mobile/ja/tools/hamming-code-calculator/
“ハミング符号の計算(エンコード・デコード・誤り訂正).” kakaoCalc, 8 Nov. 2026, kakao.mobile/ja/tools/hamming-code-calculator/.