ハミング符号による誤り訂正|科目A-1(応用情報技術者) 令和6年 春期午前試験 問4
出典:令和6年春期 午前 問4
分野:基礎理論(中分類) / 通信に関する理論
符号長7ビット,情報ビット数4ビットのハミング符号による誤り訂正の方法を,次のとおりとする。
受信した7ビットの符号語x1x2x3x4x5x6x7(xk=0又は1)に対して
c0 = x1 + x3 + x5 + x7
c1 = x2 + x3 + x6 + x7
c2 = x4 + x5 + x6 + x7
(いずれも mod 2 での計算)
を計算し,c0,c1,c2の中に少なくとも一つは0でないものがある場合には,
i = c0 + c1 × 2 + c2 × 4
を求めて,左から i ビット目を反転することによって誤りを訂正する。
受信した符号語が1000101であった場合,誤り訂正後の符号語はどれか。
- ア:1000001
- イ:1000101
- ウ:1001101
- エ:1010101
TSUNAGARU-ADVICE
まず押さえたいこと
ハミング符号では、受信したビット列から複数の検査式を使ってシンドロームを求め、その値から誤り位置を特定するのが基本です。各cの値はmod 2で計算するため、対象ビットの1の個数が偶数なら0、奇数なら1になります。
迷ったときの判断軸
まずc0、c1、c2をそれぞれ独立に求め、次にi = c0 + c1 × 2 + c2 × 4として誤り位置を決めます。iは左から数えたビット位置なので、位置の数え方を逆にしないように注意しましょう。最後は該当ビットだけを0と1で反転します。
科目Bにつなげるために
特にプロフェッショナルデジタルスキル(システム)試験合格を目指す方は、ハミング符号を誤り検出・訂正、パリティ、シンドロームと結び付けて理解しましょう。通信やメモリで発生するビット誤りを、冗長ビットによって検出・訂正する仕組みの基礎になります。
受信した符号語は「1000101」なので、各ビットは次のとおりです。
x1 = 1、x2 = 0、x3 = 0、x4 = 0、x5 = 1、x6 = 0、x7 = 1
まず、c0、c1、c2をそれぞれmod 2で計算します。
c0 = x1 + x3 + x5 + x7
= 1 + 0 + 1 + 1 = 3
3 mod 2 = 1
c1 = x2 + x3 + x6 + x7
= 0 + 0 + 0 + 1 = 1
1 mod 2 = 1
c2 = x4 + x5 + x6 + x7
= 0 + 1 + 0 + 1 = 2
2 mod 2 = 0
したがって、c0 = 1、c1 = 1、c2 = 0です。
次に、誤りが発生しているビット位置iを求めます。
i = c0 + c1 × 2 + c2 × 4
= 1 + 1 × 2 + 0 × 4
= 3
左から3ビット目に誤りがあるので、「1000101」の3ビット目を0から1に反転します。
1000101 → 1010101
したがって、エが適切です。