ハミング符号とは
過去問(H25春AP午前問4)ではハミング符号に関して、「ハミング符号とは,データに冗長ビットを付加して,1ビットの誤りを訂正できるようにしたものである」とあります。ポイントは、どのビットが間違っているかまで検出できるので、データ誤りを訂正できることです。

以下の過去問で言うと、データが「0110」で、それに対するハミング符号が「011」です。これを付与することで、1ビット誤りを検出し、どこが間違っているかもわかります。

CRCとの違い
CRCとハミング符号の違いについて
CRCは、「生成多項式」を使うのが特徴。x3乗+○x2乗+・・・みたいな、xの何次式かの計算式である。
これにより、パリティと違い、複数のビット誤りを検出できる。
ただし、誤りの訂正まではできないので、受信側が送信側にデータの再送を依頼する。
これは、HDLC手順で利用されています。

一方、ハミング符号は、こちらも計算式を用いることはCRCと同じ。
特徴は、受信側で誤りの訂正までできる優れもの。再送しなくていいのは便利。
だが、CRCと違って、1ビット誤りしか分からない。一部のRAIDで使われている。

ハミング符号の過去問
(1)過去問(H25春AP午前問4)
問4 ハミング符号とは,データに冗長ビットを付加して,1ビットの誤りを訂正できる
haming
ハミング符号1110011には1ビットの誤りが存在する。誤りビットを訂正したハミング符号はどれか。

ア 0110011  イ 1010011  ウ 1100011  エ 1110111
今回は1ビット誤りなので、X1~X4のどれかに誤りがあります。
問題文と照らし合わせ、X1X2X3P3X4P2P1=1110011 として、3つの式に入れてみましょう。

1※1※0※1=1
1※1※0※1=1
1※1※1※0=1  ※は排他的論理和(表記の関係で)

ということで、本来は0になるべき値が、全て1に変わっています。
全ての式にX1が入っているので、X1が誤りということが分かります。
よって、X1を0に置き換えた0110011(選択肢ア)が正解です。
ネットワークスペシャリストを目指す女性SEあれ?

それ以外のビットは変更無しですか?
はい。1ビットの誤りですし、実際、X1を0にすることで、付加ビットの3つの式も全て満たします。

(2)H19秋SW午前問7
問7 コンピュータの主記憶の誤り制御などに採用されている方式のうち、1 ビット誤りを訂正し,2ビットの誤りを検出することができる方式はどれか。
ア 奇数パリティ方式 
イ 水平パリティ方式 
ウ チェックディジット方式
エ ハミング符号方式
奇数パリティ方式や水平パリティ方式では、誤り訂正はできません。1ビットの誤り検知までです。↓


正解は、エのハミング符号です。

(3)H17NW午前問32

haming2