#海明码列题
最近在学习海明码,看了一遍书还是不太理解,就找了一道题自己做做看。
例子:8位数01101101如何使用海明码进行校验
①数据位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 | P1,P2 |
H4(P3) | 4 | P3 |
H5(D1) | 5=1+4 | P1,P3 |
H6(D2) | 5=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 |
H11(D6) | 11=1+2+8 | P1,P2,P4 |
H12(D7) | 12=4+8 | P3,P4 |
则
P1 =D0+D1+D3+D4+D6=1+0+1+0+1=1
P2 = D0+D2+D3+D5+D6=1+1+1+1+1=1
P3 = D1+D2+D3=0+1+1+0=0
P4 = D4+D5+D6+D7=0+1+1+0=0
可见结果不全为0,则存在错误位。
P4 P3P2 P1 = 0011 转换为10进制后为3,则第三位海明码H3(D0)有误,将D0取反后为正确的数据:
正确的数据:D7,D6,D5,D4,D3,D2,D1,D0
0 1 1 0 1 1 0 0