海明码(简单转化)

有效信息转换为海明码进行发送,转换过程如下:


例子:

有效信息:10011100

1.海明码不等式

设N为校检码的位数,K是有效信息位,r是校检位,则有海明不等式:

N = K+r < 2^r ;

2.校验位+有效信息位的表示

在海明码中,位号数(1,2,3,4....)为2的权值的那些位,即1(2的0次方),2(2的1次方),4(2的平方)位,作为奇偶校检位,记作:P1,P2,P3.....余下各位则为有效信息位

10011100有8个有效信息位,则海明码可表示为:

位号(a) 1 2 3 4 5 6 7 8 9 10 11 12
P占位 P1 P2 1 P3 0 0 1 P4 1 1 0 0

3.确定校验位对应的二进制数值(即0,1)

海明码中的每一位分别被P1,P2,P3....Pr中的一至若干位所校验,规律为:

第i位由校验位位号之和等于i的那些校验位所校验

引入表格:

海明码位号 占用的检验位位号 备注
1 1

1 = 1

2 2 2 = 2
3 1,2 3 = 1+2
4 4 4 = 4
5 1,4 5 = 1+4
6 2,4 6 = 2+4
7 1,2,4 7 = 1+2+4
8 8 8 = 8
9 1,8 9 = 1+8
10 2,8 10 = 2+8
11 1,2,8 11 = 1+2+8
12 4,8 12 = 4+8

每个校验位所校检的位号

校验位位号 被校检位位号
1(P1) 1,3,5,7,9,11
2(P2) 2,3,6,7,10,11
4(P3) 4,5,6,7,12
8(P4) 8,9,10,11,12

条件备齐,检验位数值由其对应的被校检位位号对应数值之和来确立

如P1 = a1+a3+a5+a7+a9 + a11 = 0+1+0+1+1+0+0 = 1(没有进位,1+1为0),

以此类推,P2 = 1,P3 = 1,P4 = 0

至此,10011100对应海明码彻底推出:111100101100


5.校验

来到最有意思的环节,改掉海明码中任意一位数值,都能从错误的海明码中把这一位找出来,一下为校验过程

改掉以上例子中的第3位,即改为110100101100,再次计算校验码Pn的值,

P1 = a1+a3+a5+a7+a9 + a11 = 1,P2 = 1, P3 = 0, P4 = 0;

此时检验码由大到小从左到右排列,即为0011,化成十进制是3,即检验出第3位被修改过了,此时只需修改第三位的数值,即0变1,1变0,即为正确的传输信息。

海明码的局限性在于只能检验并修改1位错误的信息。

 

猜你喜欢

转载自blog.csdn.net/weixin_40571331/article/details/79968809