海明码

海明码的概念:

海明码是一种可以纠正一位差错的编码。它是利用在信息位为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' = 0 S4 = D ⊕D' = 0  S3 = C⊕C' = 1 S2 = B⊕B' = 1 S1 = A⊕A' = 1

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值