网上看了好几篇文章后终于算是捋明白了,但是看到的这些资源要么说得云里雾里,要么干脆说得有问题(然后还被点了好多赞。。。),无论如何这些都容易误导小白。作为C站多年老潜水员,我还是把海明校验码的要点总结分享一下吧。
1. 海明码的特点:
其中m表示数据位的位数,k表示海明校验码的位数
k位海明校验码一共可以表示种校验信息结果,其中有一种要用来表示没有出错的情况,则其余还剩
-1种结果,为了使校验结果可以指出任一位出错的位置,则需要满足以上不等式。
2. 举例说明:
发送端:
设要传输的数据为101101100
(1)可知m=9,由公式,可知k最小值为4,所以总共要传输的数据位数为9+4=13;
(2)海明校验码放在索引号为的位(n=0,1,2,...,k-1)上,本例中k=4,所以校验位的索引为第1,2,4,8位,于是在下表中把这几位空出来
索引号 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
H1 |
H2 |
1 |
H4 |
0 |
1 |
1 |
H8 |
0 |
1 |
1 |
0 |
0 |
(3)列出进制转换表:
索引号</ |