海明码例题解答

最近在学习海明码,看了一遍书还是不太理解,就找了一道题自己做做看。

例子:8位数01101001如何使用海明码进行校验

①数据位n=8,则根据公式2k-1>=n+k计算出校验位k = 4;

则8个数据位为D0,D1,D2,D3,D4,D5,D6,D7;4个校验位为P1,P2,P3,P4

②根据公式Pi=2i-1=计算出校验位的位置分别为1,2,4,8,则排列后的数据为:

D7,D6,D5,D4,P4,D3,D2,D1,P3,D0,P2,P1

③计算校验位的值:

海明码

下标

校验位

H1(P1)

1

P1

H2(P2)

2

P2

H3(D0)

3=1+2

P1P2

H4(P3)

4

P3

H5(D1)

5=1+4

P1,P2

H6(D2)

6=2+4

P2,P3

H7(D3)

7=1+2+4

P1,P2,P3

H8(P4)

8

P4

H9(D4)

9=1+8

P1,P4

H10(D5)

10=2+8

P2,P4

H11(D6)

11=1+2+8

P1,P2,P4

H12(D7)

12=4+8

P3,P4

可以得到涉及到P1的有D0,D1,D3,D4,D6;涉及到P2的有D0,D2,D3,D5,D6;涉及到的P3有D1,D2,D3,D7;涉及到P4的有D4,D5,D6,D7

P1 =D0+D1+D3+D4+D6=1+0+1+0+1=1

P2 = D0+D2+D3+D5+D6=1+0+1+1+1=0

P3 = D1+D2+D3=0+0+1+0=1

P4 = D4+D5+D6+D7=0+1+1+0=0

可见结果不全为0,则存在错误位。

P4 P3P2 P1 = 0101 转换为10进制后为5 ,则第五位海明码H5(D1)有误,将D1取反后为正确的数据:

正确的数据:D7,D6,D5,D4,D3,D2,D1,D0

                     0     1     1       0     1      0      1     1



你可能感兴趣的:(海明码例题解答)