海明码

来源:互联网 发布:什么手机有4g网络 编辑:程序博客网 时间:2024/06/09 14:26

海明码的概念:

海明码是一种可以纠正一位差错的编码。它是利用在信息位为k位,增加r位冗余位,构成一个n=k+r位的码字,然后用r个监督关系式产生的r个校正因子来区分无错和在码字中的n个不同位置的一位错。它必需满足以下关系式:2^r>=n+1  或  2^r>=k+r+1

例如:要发送的信息为1011  0101  0011求发送的实际信息是什么?从高位到低位,如果第四位出现错误,计算海明码校验值?

解:要发送的信息为12位,即k = 12;

2^r > k+r可求得 r = 5;

设五位冗余位为A,B,C,D,E

将五位冗余位插入信息位中,插入规律为2^n(n = 0,1,2,3...)

插入后为A   B    1    C    0    1    1    D    0    1     0     1       0     0     1      E    1

位数:b1  b2  b3  b4  b5  b6  b7  b8  b9 b10 b11 b12 b13  b14 b15 b16 b17 

计算出校验因子即A,B,C,D,E的值,校验因子的值为所有校验位的值的抑或,一个校验因子的校验位为: 它在第几位就从它开始校验几个数然后跳过几个数,以此循环,如A在第一位所以它的校验位为:b1,b3,b5,b7,b9,b11,b13,b15,b17;B在第二位,所以它的校验位为b2,b3,b6,b7,b10,b11,b14,b15;


A = 1⊕0⊕2⊕0⊕0⊕0⊕1⊕1 = 0

B = 1⊕1⊕1⊕1⊕0⊕0⊕1 = 1

C = 0⊕1⊕1⊕1⊕0⊕0⊕1 = 0

D = 0⊕1⊕0⊕1⊕0⊕0⊕1 = 1

E = 1

将校验位插入信息码中就得到实际发送的信息为0 1100 1110 1010 0111

假如第四位发生错误,即信息码变为1010 0101 0011

第四位影响的校验因子有A,B,C重新按照上面的方法算出A',B',C'的值分别为1,0,1

所以校验组的值S5,S4,S3,S2,S1

S5 = E⊕E' = 0S4 = D ⊕D' = 0 S3 = C⊕C' = 1S2 = B⊕B' = 1S1 = A⊕A' = 1

所以校验组为00111即第七位发生错误,将接收到的海明码第七位取反就得到正确的发送信息,再去掉校验因子就得到实际的信息;

原创粉丝点击