一文看懂海明校验码及其计算方法(详细总结) |
您所在的位置:网站首页 › 奇偶校验码怎么算1的个数 › 一文看懂海明校验码及其计算方法(详细总结) |
网上看了好几篇文章后终于算是捋明白了,但是看到的这些资源要么说得云里雾里,要么干脆说得有问题(然后还被点了好多赞。。。),无论如何这些都容易误导小白。作为C站多年老潜水员,我还是把海明校验码的要点总结分享一下吧。 1. 海明码的特点: 其中m表示数据位的位数,k表示海明校验码的位数 k位海明校验码一共可以表示 2. 举例说明: 发送端: 设要传输的数据为101101100 (1)可知m=9,由公式 (2)海明校验码放在索引号为 索引号 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)列出进制转换表: 索引号 8( 4( 2( 1( 3 0 0 1 1 5 0 1 0 1 6 0 1 1 0 7 0 1 1 1 9 1 0 0 1 10 1 0 1 0 11 1 0 1 1 12 1 1 0 0 13 1 1 0 1 上表中,先说每一行的内容:从第二行开始,每一行的第一列代表索引号,这个索引号是除去了海明校验位之外的其他所有位。后面几列为该索引号对应的二进制表示,其位数取决于第(1)步计算得出的海明校验码的位数,比如第二行,索引号是3,十进制3对应的二进制就是0011,之所以用4位表示是因为这段信息码需要4个海明校验位。 再看列信息:第一行最右边数字1所对应的列里,出现1的,就表示可以用第H1位完成校验,出现数字0则表示不能用H1位进行校验,因此,由上表可知: 校验位H1负责校验:第3,5,7,9,11,13位(上表黄色高亮显示部分),对应位置上的值进行异或得:1⊕0⊕1⊕0⊕1⊕0=1,由于海明校验做的是偶校验,则H1=1; 校验位H2负责校验:第3,6,7,10,11位(上表蓝色高亮显示部分),对应位置上的值进行异或得:1⊕1⊕1⊕1⊕1=1;校验位H4负责校验:第5,6,7,12,13位,对应位置上的值进行异或得:0⊕1⊕1⊕0⊕0=0;校验位H8负责校验:第9,10,11,12,13位,对应位置上的值进行异或得:0⊕1⊕1⊕0⊕0=0。 (4)得到最终要传输的数据串为 索引号 1 2 3 4 5 6 7 8 9 10 11 12 13 1 1 1 0 0 1 1 0 0 1 1 0 0 接收端: (1)进行校验: 若此时接收方收到的数据相比源数据,在第11位发生了错误: 索引号 1 2 3 4 5 6 7 8 9 10 11 12 13 1 1 1 0 0 1 1 0 0 1 0 0 0 接收方先按照第③步中类似的方式进行计算校验,区别在于要加上校验位自身这一位,即: C1的值为第H1,3,5,7,9,11,13位上的值进行异或,计算结果为1 C2的值为第H2,3,6,7,10,11位上的值进行异或,计算结果为1 C4的值为第H4,5,6,7,12,13位上的值进行异或,计算结果为0 C8的值为第H8,9,10,11,12,13位上的值进行异或,计算结果为1 (2)错误位判定: 由于海明校验采取的是偶校验,所以判断出C4监督式包含的数据位无错,错误位发生在C1,C2,C8三个监督式包含的位上。 此时的做法是:①找到C1,C2,C8这三个监督式共同包含的位;②找出共同包含的位之后,再剔除掉在C4中出现过的位(因为已经验证过C4监督式中的位是正确的);③剩下的位就是发生传输错误的位。 这三个监督式都包含第11位,同时C4监督式中没有第11位,因此出错的位就是第11位。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |