1、【例1-34】已知被校验的数据为6位二进制数,D=101101,求其海明码表示方法。解:海明码是一种纠错码,既可发现错误,又能纠正错误的代码。(1)首先决定校验位之位数r当被校数据位k为6时,生成海明码的校验位之位数应满足2”6+r+1,也就是说校验码的2个状态中,必须能表示出被校数据中是哪一位出错,或哪一个校验位出错,当各位正确时也应该表示出来。当r=3时,23=8,共有8个状态k+r+1=6+3+1=10,共有10种情况,不能表示清楚。当r=4时,2=16,共有16个状态,大于k+r+1=11,因此选用r=4,校验位至少取4位。(2)决定海明码校验位的位置按海明码生成方法规定,海明校验位第
2、位应该放在2的海明位置上。因此:当1,校验位P1的海明位号为2=2=1,即放在H1的位置上。当=2,校验位P2的海明位号为221=2=2即放在H2的位置上。当3,校验位P3的海明位号为21=2=4即放在H的位置上。当i=4,校验位P4的海明位号为241=23=8即放在Hg的位置上。(3)决定数据位的位置数据位D6DsD4D,DzD1由低到高依次插空放在其他海明位上。H:oHoHgHzH6HsH4H3H2HD6DsPD4D3D2P3DP2P1即D1放在海明位号为3的位置上,即H,即D2放在海明位号为5的位置上,即H5,即D放在海明位号为6的位置上,即H6,即D4放在海明位号为7的位置上,即H,即
3、D影放在海明位号为9的位置上,即Hg,即D6放在海明位号为10的位置上,即Ho。(4)决定被校数据位由哪几位校验位进行校验根据海明码生成方法规定:每个数据位由多个校验位进行校验,但被校数据的海明位号要等于校验该位数据的各位校验位海明位号之和。D1的海明位号为3,分成1+2,由H1之P1和H2之P2校验,D2的海明位号为5,分成1+4,由H1之P1和H4之P校验,D3的海明位号为6,分成2+4,由H2之P2和H4之P3校验,D4的海明位号为7,分成1+2+4,由H1之P1,H2之P2和H4之P3校验,D5的海明位号为9,分成1+8,由H1之P1和Hg之P4校验,D6的海明位号为10,分成2+8,
4、由H2之P2和Hg之P4校验。(5)决定各个校验位之值。根据海明码生成方法规定:用偶校法形成校验位,校验位之值为各被校位数据之和。P1=D1+D2t+D3+D4+D5,P2=D1+D3tD3+D4+D6,http:/www.TopS34程序员考试轴导P:=D2+D:+D4,P4=Ds+D6.本例中被校数据101101。即D1=1,D2=0,D3=1,D4=1,D5=0,D6=1,家网因此:P1=D1+D2tD4+D5=1+0+1+0=0,P2=D1+D3+D4+D6=1+1+1+1=0,P3=D2tD3+D4=0+1+1=0,P4=D5+D6=0+1=1。最后得到被校验数据101101之海明码
5、为:1011100100。(6)海明码校验值。用于判断传输数据过程出错情况。规定海明码的校验值C为校验位和它所校验的各数据位之和。C1=P1+D1+D2tD4+D5,C2=P2+D1+D3+D4+D6:C3=P3tD2+D3+D4:C4=P4+Ds+D6o因为校验位等于其被校验的各位数据之和,所以该校验位与其被校各位数据之和应为“0”。在读出和传送正确,没有出现错误时:C4CC2C1=0000。如果某位出错,则C4C,C2C1之值必定不是0000,且其编号就是出错数据位的海明位号。如D2出错,由1变0或由0变1,则与D2有关的海明校验值变为1。在本例中D2出错影响C和C3,使C1=1,C3=1,而与C2、C4无关,C2=0,C40。4位C值形成的编码CCC2C1=0101,表示出错数据位为海明位号为5的那一位即D2。将H5变反,即可纠正错误,因此说海明码是一种纠错码。本例中被校数据为101101,形成的海明码为1011100101,若传送中H5出错,即H5由0变成1,接收端得到一个错误码1011110101,经过校验电路得到海明校验值C4C3C2C1=O101,不是0000,首先说明传送出错,又说出错位是H5,.将H5变反即可得到正确数值1011100101。