通过一个例子搞懂海明码校验纠错原理

问题

编码前有效信息为10011101,请求解对应的海明码

位数

如何海明码(校验码)的位数?参考如下公式:

2^k >= N+k+1

其中N为有效信息位数,k为校验码位数。

如上述问题,有效信息有8位,所以N = 8 代入上述公式,满足条件成立的最小值 k = 4,所以海明码(校验码)的位数为4

位置

海明码一共有4位,那它们的具体位置在哪里呢?位置公式如下:

2^n(2^0,2^1,2^2...)

有效信息(8位)+ 校验码(4位) = 12位,我们通过表格来定位校验码位置,如下表所示,P代表校验位,D代表信息位:

码位 1 2 3 4 5 6 7 8 9 10 11 12
码值 P1 P2 D1 P3 D2 D3 D4 P4 D5 D6 D7 D8
校验位 2^0 2^1 2^2 2^3

求值

求值公式(以偶校验求值):

  1. Pn的值,受验证位中所有1的个数的影响,当1为偶数个时Pn = 0,当1为奇数个时 Pn = 1。
  2. 验证位 = Pn所在的位数起,校验n位,然后跳过n位,以此规则循环到末尾。(例如所在位数在第5位,则校验5位,然后跳过5位)
码位 1 2 3 4 5 6 7 8 9 10 11 12
码值 P1 P2 D1 P3 D2 D3 D4 P4 D5 D6 D7 D8
校验位 1 0 0 1 1 1 0 1
P1验证位

P1验证位目前有3个1,为保证偶校验,所以P1 = 1。

码位 1 2 3 4 5 6 7 8 9 10 11 12
码值 P1 P2 D1 P3 D2 D3 D4 P4 D5 D6 D7 D8
校验位 1 1 0 0 1 1 1 0 1
P1验证位
P2验证位

P2验证位目前有3个1,为保证偶校验,所以P2 = 1。

码位 1 2 3 4 5 6 7 8 9 10 11 12
码值 P1 P2 D1 P3 D2 D3 D4 P4 D5 D6 D7 D8
校验位 1 1 1 0 0 1 1 1 0 1
P1验证位
P2验证位
P3验证位

P3验证位目前有2个1,为保证偶校验,所以P3 = 0。

码位 1 2 3 4 5 6 7 8 9 10 11 12
码值 P1 P2 D1 P3 D2 D3 D4 P4 D5 D6 D7 D8
校验位 1 1 1 0 0 0 1 1 1 1 0 1
P1验证位
P2验证位
P3验证位
P4验证位

P4验证位目前有3个1,为保证偶校验,所以P4 = 1。

至此所有编码工作结束:111000111101

你可能感兴趣的:(软考-软件设计师,校验码,软考)