海明码校验(通俗易懂)

管你以前会不会,看完都变会。哈哈哈哈哈

海明码,是一种利用奇偶性来检错和纠错的校验方法。

首先要了解一下,海明码由校验码和题目给出的原数据组合而成。

例如:
用偶校验方式的海明码校验数据01101001

1. 第一步:确定校验码的位数k

  • 首先
    题目中的原数据01101001的位数n=8,这8位数分别用Di表示。(注意顺序是反着的,也就是依次为D7,D6,D5,D4,D3,D2,D1,D0)
  • 知识点来了
    校验码位数k与原数据n的关系为:在这里插入图片描述
    可以将k=1,2,3,4,5等代入很快就求得k=4是最小的满足者,第一步完成。

2. 第二步:确定校验码以及原数据的位置

  • 综上所述
    海明码共8+4=12位,分别用Hi表示;
    校验码4位分别有Pi表示;
    原数据8位有D(0-7)表示。

  • 小知识
    校验码总是放在海明码下标为2的幂次方的位置,如:1,2,4,8…

  • 先安排校验码的位置

H1P1
H2P2
H3
H4P3
H5
H6
H7
H8P3
H9
H10
H11
H12
  • 剩下的是题目中给出的原数据的位置哦
H1P1
H2P2
H3D0——1
H4P3
H5D1——0
H6D2 ——0
H7D3 ——1
H8P4
H9D4——0
H10D5——1
H11D6——1
H12D7——0

3. 第三步:求校验码
我们要知道需要校验的是题目中给出的原数据,也就是D(0-7)
在海明码中,结合上面的表格,看看我的思路(以下例子看几个就好,后面有结论表格),下面的加法纯属看下标,没有实际的值
D0—对应H3—H3=H2+H1—H2,H1对应P2,P1—所以D0由P1,P2验证。
D1—对应H5—H5=H4+H1—H4,H1对应P3,P1—所以D1由P1,P3验证。
D2—对应H6—H6=H4+H2—H4,H2对应P3,P2—所以D2由P2,P3验证。
D3—对应H7—H7=H4+H2+H1—H4,H2,H1对应P3,P2,P1—所以D1由P1,P2,P3验证。
D4—对应H9—H9=H8+H1—H8,H1对应P4,P1—所以D4由P1,P4验证。
D5—对应H10—H10=H8+H2—H8,H2对应P4,P2—所以D5由P2,P4验证。
D6—对应H11—H11=H8+H2+H1—H8,H2,H1对应P4,P2,P1—所以D6由P1,P2,P4验证。
D7—对应H12—H12=H8+H4—H8,H4对应P4,P3—所以D7由P3,P4验证。

由以上得出

需验证的数据由那个校验码验证
D0P1,P2
D1P1,P3
D2P2,P3
D3P1,P2,P3
D4P1,P4
D5P2,P4
D6P1,P2,P4
D7P3,P4
  • 知识点来了,求校验码的值

验证码=需要它验证的所有原数据(题目中给出的)相异或,也就是说

P1=D0异或D1异或D3异或D4异或D6(10101)
P2=D0异或D2异或D3异或D5异或D6(10111)
P3=D1异或D2异或D3异或D7(0010)
P4=D4异或D5异或D6异或D7(0110)

  • 知识点来了

若采用奇校验,则将各校验位的偶校验值取反即可

3. 最后一步:校验
四个校验位由Gi表示
Gi=Pi和所有由它校验的原数据相异或,即,

  G1=P1异或D0异或D1异或D3异或D4异或D6(P1,10101)
 G2=P2异或D0异或D2异或D3异或D5异或D6(P2,10111)
 G3=P3异或D1异或D2异或D3异或D7(P3,0010)
 G4=P4异或D4异或D5异或D6异或D7(P4,0110)
  • 结论
    -若采用的是偶校验,四个校验位Gi全为0,表示收到的数据正确
    -若采用的是奇校验,四个校验位Gi全为1,表示收到的数据正确

其实很简单,WO说起来有点麻烦,不知道说清楚了没有,刚复习到这一块,总结一下。

  • 13
    点赞
  • 68
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值