关于海明码的介绍,前面几篇博客中已经说明了。这里主要是介绍如何根据海明码的监督关系式求解海明码的码字。下面主要以典型例题的方式介绍如何求解。
例题1:
假定信息码为0010,海明码的监督关系式为:
S2 = a2+a4+a5+a6
S1 = a1+a3+a5+a6
S0 = a0+a3+a4+a6
求解海明码的码字。
解:(1)由监督关系式可知冗余码为a2 a1 a0,共三位。
(2)冗余码与信息码合成的海明码是:0 0 1 0 a2 a1 a0,共七位。可通过表格示意如下:
a6 | a5 | a4 | a3 | a2 | a1 | a0 |
0 | 0 | 1 | 0 | S2 | S1 | S0 |
设S2 = S1 = S0 = 0,也即假定a2=a1=a0=0,由监督关系式得:
S2 = a2+a4+a5+a6 = 0 + 1 +0 + 0 = 1,(“+”号代表异或运算)
S1 = a1+a3+a5+a6 = 0 + 0 + 0 + 0 = 0
S0 = a0+a3+a4+a6 = 0 + 0 + 1 + 0 = 1
所以S2S1S0=a2a1a0=101,则海明码的码字为:0010101。
例题2:
使用海明码进行纠错,7 位码长(x7x6x5x4x3x2x1),其中4 位数据,监督关系式为:
c0 = x1+x3+x5+x7
c1 =x2+x3+x6+x7
c2 =x4+x5+x6+x7
如果接收到的码字为1000101,那么纠错后的码字是?
解:海明码码字可示意如下表:
x7 | x6 | x5 | x4 | x3 | x2 | x1 |
1 | 0 | 0 | 0 | 1 | 0 | 1 |
c0 = x1+x3+x5+x7 = 1+1+0+1=1
c1 =x2+x3+x6+x7 = 0+1+0+1=0
c2 =x4+x5+x6+x7 = 0+0+0+1=1
通过监督关系式的异或运算可得c2c1c0=101, 二进制101对应的十进制为5,也就是1000101从右往左数的第五位出错了,第五位是0,正确的应该是1,所以纠错后的码字是1010101。