海明校验码的理解和计算

海明码是一种利用奇偶性来差错和纠错的校验方法。海明码的构成方法是在数据位之间的特定位置插入K个校验位,通过扩大码距来实现检错和纠错。

假设数据位是n位,校验位是k位,则n和k的关系必须满足以下关系:

2^k -1 >= n+k

依据给定的数据位,很容推断到校验位,但是校验位在数据中的位置需要立即。

还是以一个实际的例子说明吧:

原始数据:1011

这样 n=4 , 将 k=1,2,3,…  代入公式很容发现 k=3就满足条件,2^3-1 >=4+3

所以校验码位数为3位,数据和校验码一共7位。

校验码的位置都处在2的n(n=0,1,2,3…)次方中,即位于1,2,4,8,16…的位置上,其余为才能填充数据。

本例就7位数据组成:D4D3D2D1+P2P1P0

7        6        5        4        3        2        1

D4      D3    D2    **   P2**     D1      P1    P0

1        0        1                    1

7=4+2+1 ==> 第4位 P2,第2位P1,第1位 P0 这3个校验位共同校验

6=4+2==> 第4位 P2,第2位P1 这2个校验位共同校验

5=4+1 ==> 第4位 P2,第1位 P0  这2个校验位共同校验

3=2+1 ==> 第2位P1,第1位 P0    这2个校验位共同校验

校验码计数,异或运算:

P2 = D7D6D5=101=0

P1=D7D6D3=101=0

P0=D7D5D3=111=1

校验码为:001

传输数据为: 1 0 1 0 1 0 1

检错和纠错原理

接收方依据同样的规则重新计算三位校验码的值。而后与接收到的校验码进行异或。当数据无误时,产生的校验码无误,若接收到的校验码有误,那么这不同的2个校验码异或,必然为1.

若某位的校验码最终异或结果为1,则表示产生了错误,找出错误位之后,就可以纠错了,纠错方法就时将该为逆转。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

flysh05

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值