ハミング符号による誤り訂正|科目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
解説

受信した符号語は「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

したがって、エが適切です。

TSUNAGARU-ADVICE

まず押さえたいこと

ハミング符号では、受信したビット列から複数の検査式を使ってシンドロームを求め、その値から誤り位置を特定するのが基本です。各cの値はmod 2で計算するため、対象ビットの1の個数が偶数なら0、奇数なら1になります。

迷ったときの判断軸

まずc0、c1、c2をそれぞれ独立に求め、次にi = c0 + c1 × 2 + c2 × 4として誤り位置を決めます。iは左から数えたビット位置なので、位置の数え方を逆にしないように注意しましょう。最後は該当ビットだけを0と1で反転します。

科目Bにつなげるために

特にプロフェッショナルデジタルスキル(システム)試験合格を目指す方は、ハミング符号を誤り検出・訂正、パリティ、シンドロームと結び付けて理解しましょう。通信やメモリで発生するビット誤りを、冗長ビットによって検出・訂正する仕組みの基礎になります。