【软考】校验码之海明码
目录
1. 说明 2. 编码规则 3. 编码过程 4. 举个例子 5. 检测错误
1. 说明
1.海明码(Hamming Code)是由贝尔实验室的 Richard Hamming 设计的,是一种利用奇偶性 来检错 和纠错 的校验方法。 2.海明码的构成方法是在数据位之间的特定位置上插入k个校验位,通过扩大码距 来实现检错和纠错。 3.设数据位是n位,校验位是k位,则n和必须满足以下关系:2k -1≥n+k ,减一是因为1个校验信息用来指出错误。
2. 编码规则
1.设4个校验位P4 P3 P2 P1 ,8个数据位D7 D6 D5 D4 D3 D2 D1 D0 ,则对应的海明码为H12 H11 H10 H9 H8 H7 H6 H5 H4 H3 H2 H1 。 2.P1 在海明码的第20 位置上,P2 在海明码的第21 位置上,P3 在海明码的第22 位置上,P4 在海明码的第23 位置上,即Hj =Pi ,j=2i-1 。 3.数据位则依序从低到高占据海明码中剩下的位置。 4.海明码中的任何一位都是由若干个校验位 来校验的。 5.被校验的海明码位的下标等于所有参与校验该位的校验位的下标之和。 6.校验位由自身校验。
3. 编码过程
1.例如8位的数据位,进行海明校验需要4个校验位,因为24 -1=15>(8+4),减1是因为留一个数判断整体是否有错误。 2.假如数据位为D7 D6 D5 D4 D3 D2 D1 D0 ,校验位为P4 P3 P2 P1 ,形成的海明码为H12 H11 H10 H9 H8 H7 H6 H5 H4 H3 H2 H1 。 3.按照8,4,2,1位放校验位,即H8 H4 H2 H1 放校验位P4 P3 P2 P1 ,得到序列为:D7 D6 D5 D4 P4 D3 D2 D1 P3 D0 P2 P1 。 4.数据位 D7 的位置为12,分解为8+4,即数据位D7 由校验位 P4 P3 校验。 5.数据位 D6 的位置为11,分解为8+2+1,即数据位D6 由校验位 P4 P2 P1 校验。 6.数据位 D5 的位置为10,分解为8+2,即数据位D5 由校验位 P4 P2 校验。 7.数据位 D4 的位置为9,分解为8+1,即数据位D4 由校验位 P4 P1 校验。 8.数据位 D3 的位置为7,分解为4+2+1,即数据位D3 由校验位 P3 P2 P1 校验。 9.数据位 D2 的位置为6,分解为4+2,即数据位D2 由校验位 P3 P2 校验。 10.数据位 D1 的位置为5,分解为4+1,即数据位D1 由校验位 P3 P1 校验。 11.数据位 D0 的位置为3,分解为2+1,即数据位D0 由校验位 P2 P1 校验。 12.校验位 P4 的位置为8,即校验位P4 由校验位 P4 校验。 13.校验位 P3 的位置为4,即校验位P3 由校验位 P3 校验。 14.校验位 P2 的位置为2,即校验位P2 由校验位 P2 校验。 15.校验位 P1 的位置为1,即校验位P1 由校验位 P1 校验。 16.P1 校验P1 、D0 、D1 、D3 、D4 、D6 ,使得P1 =D0 ⊕D1 ⊕D3 ⊕D4 ⊕D6 。 17.⊕表示异或,同为假,异为真,即1⊕0=1,1⊕1=0,0⊕0=0。 18.P2 校验P2 、D0 、D2 、D3 、D5 、D6 ,使得P2 =D0 ⊕D2 ⊕D3 ⊕D5 ⊕D6 。 19.P3 校验P3 、D1 、D2 、D3 、D7 ,使得P3 =D1 ⊕D2 ⊕D3 ⊕D7 。 20.P4 校验P4 、D4 、D5 、D6 、D7 ,使得P4 =D4 ⊕D5 ⊕D6 ⊕D7 。
4. 举个例子
1.数据为0 1 1 0 1 0 0 1,试采用4个校验位求其偶校验方式的海明码。 2.数据位从D7 D6 D5 D4 D3 D2 D1 D0 依次为0 1 1 0 1 0 0 1。 3.校验位P1 =D0 ⊕D1 ⊕D3 ⊕D4 ⊕D6 =1⊕0⊕1⊕0⊕1=1。 4.校验位P2 =D0 ⊕D2 ⊕D3 ⊕D5 ⊕D6 =1⊕0⊕1⊕1⊕1=0。 5.校验位P3 =D1 ⊕D2 ⊕D3 ⊕D7 =0⊕0⊕1⊕0=1。 6.校验位P4 =D4 ⊕D5 ⊕D6 ⊕D7 =0⊕1⊕1⊕0=0。 7.即偶校验方式海明码H12 H11 H10 H9 H8 H7 H6 H5 H4 H3 H2 H1 为 D7 D6 D5 D4 P4 D3 D2 D1 P3 D0 P2 P1 即:0 1 1 0 0 1 0 0 1 1 0 1。
5. 检测错误
1.G1 =P1 ⊕D0 ⊕D1 ⊕D3 ⊕D4 ⊕D6 。 2.G2 =P2 ⊕D0 ⊕D2 ⊕D3 ⊕D5 ⊕D6 。 3.G3 =P3 ⊕D1 ⊕D2 ⊕D3 ⊕D7 。 4.G4 =P4 ⊕D4 ⊕D5 ⊕D6 ⊕D7 。 5.若采用偶校验,则G4 G3 G2 G1 全为0时表示接收到的数据无错误。 5.若采用奇校验,则G4 G3 G2 G1 全为1时表示接收到的数据无错误。 6.若采用偶校验,当G4 G3 G2 G1 不全为0时说明发生了差错,G4 G3 G2 G1 的十进制值指出了发生错误的位置,例如G4 G3 G2 G1 =1010,十进制为8+2=10,说明H10 即D5 出错了,将其取反即可纠正错误。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/883172.html
如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!