例:8ビットのデータ(D1〜D7)を図のように並べ、縦(行)と横(列)のそれぞれが偶数パリティになるように、ハミングビット(H0〜H3)を決める。そして、データとハミングビットの合計12ビットを符号として使用する。
D0 | D3 | D6 | → | H2 |
D1 | D4 | D7 | → | H3 |
D2 | D5 | |||
↓ | ↓ | |||
H0 | H1 |
検査するときはあらためてハミングビットを決め直して、先に求めておいたものと比較する。このとき両方のハミングビットが同一であれば、誤りはなかったことになる。ところが一致しないビットがあった場合には、それがどのハミングビット位置かによって、データ中の誤りビットの位置を判明させることができる。さらに、2進数であれば、誤りビット位置さえわかれば、訂正は1/0を反転させてやればよい。
例えば、ハミングビットのH0とH2の2ビットが不一致の場合は、H0を含む行とH2を含む列に共通している要素、即ちD0が誤っていることになる。
また、H1だけが不一致の場合は、H1を含む行だけに関する要素D5の誤りであることがわかる。
これらハミングビットの不一致箇所の組み合わせとデータ中の誤りビット位置は次の通りである。
H3 | H2 | H1 | H0 | エラービットの位置 |
・ | ・ | ・ | ・ | エラーなし |
× | ・ | ・ | ・ | D7 |
・ | × | ・ | ・ | D6 |
× | × | ・ | ・ | エラーあり(訂正不能) |
・ | ・ | × | ・ | D5 |
× | ・ | × | ・ | D4 |
・ | × | × | ・ | D3 |
× | × | × | ・ | エラーあり(訂正不能) |
・ | ・ | ・ | × | D2 |
× | ・ | ・ | × | D1 |
・ | × | ・ | × | D0 |
× | × | ・ | × | エラーあり(訂正不能) |
・ | ・ | × | × | エラーあり(訂正不能) |
× | ・ | × | × | エラーあり(訂正不能) |
・ | × | × | × | エラーあり(訂正不能) |
× | × | × | × | エラーあり(訂正不能) |
「・」は一致、「×」は不一致を表す。
ただし、2ビット以上の誤りが生じた場合には検出はできるが、訂正はできない。 ◇