综合上面我们求一下信息1011的海明码是多少?
答:
我们知道信息位有4位,即为n=4,求得公式中校验位K=3。所以海明码一共7位:H7-H1 ; 信息位:D3-D0; 校验位:P3-P1。
求P3-P1在海明码中的位置。根据图中下面这句话。我们可以求得位置。
p1= 2的(1-1)次方=1
p2=>2
p3=>4
H7 | H6 | H5 | H4 | H3 | H2 | H1 |
---|---|---|---|---|---|---|
D3 | D2 | D1 | P3 | D0 | P2 | P1 |
1 | 0 | 1 | P3 | 1 | P2 | P1 |
校验位在海明码中的位置:P1----1 P2----2 P3----4
现在我们需要求得P1-P3的值,我们的海明码就出来了。
我们需要根据上图里面的这句话来得出信号位是通过那几位校验码校验的。
H1(P1)----->P1
H2(P2)----->P2
H3(D0)------>3=1+2 ---> P1,P2
H4(P3)----->P3
H5(D1)-----> 5=4+1----> P3,P1
H6(D2)----->6=4+2 ---->P3,P2
H7(D3)----->7=4+2+1---> P1,P2,P3
eg: H7 下标为7, 校验码下标有1,2,4。 则需要7=4+2+1 。所以P1,P2,P3都参与了D3的校验。
接下来我们统计一个各个校验位校验的信号位有哪些。
P1---->P1,D0,D1,D3
P2---->P2,D0,D2,D3
P3---->P3,D1,D2,D3
进行异或运算(相同为0,相异为1)
P1=D0⊕D1⊕D3=111=1
P2=D0⊕D2⊕D3=101=0
P3=D1⊕D2⊕D3=101=0
所以海明码为:1010101。
检错计算: 本来是1011,假如传过来的是1001。(D1出错了)
则从又到左D0=1 D1=0, D2=0, D3=1
G1=P1⊕D0⊕D1⊕D3=1101=1
G2=P2⊕D0⊕D2⊕D3=0101=0
G3=P3⊕D1⊕D2⊕D3=000*1=1
G3G2G1=101
如果是偶校验,则需要全部为0,如果是奇校验全部为1。
101的10进制。则是海明码里面的第5位出错。H5(D1)出错。则D1取反,得到。1001-->1011 。 这样就实现了检错,改错了。