快速学会海明校验

海明校验

简介:本文旨在用最简洁的篇幅向大家介绍,如何快速的学会海明校验,并会做相关的题目。

海明码简介:海明码是一种多重(复式)奇偶检错系统,用于检错和纠错。

原理:在 k位数据中增加 r位校验位构成 n + k位码字,附加的 r位校验位能够均匀的拉大,每个校验位对码字中的若干位进行奇偶校验,这样当某一位出错后,会引起几个校验位的值的变化。这样既能检测出错误,又可以位纠错提供依据。

计算方法

我们以一个具体的题目为例子来看

真题演练

对于01100111,计算他的海明码。

第一步:

计算长度

通过公式计算海明码的校验码的长度r

  • 校验位数:假设有 r位校验码,k位有效数据位,则有关系:

    • 2r - 1 ≥ k + r

k = 8可以得到r=4

第二步

画表格

编码前为01101110

0110x111x0xx
二进制110010111010100110000111011001010100001100100001
海明码H12H11H10H9H8H7H6H5H4H3H2H1
对应位D8D7D6D5P4D4D3D2P3D1P2P1
G1组
G2组
G3组
G4组

规则为:计算出每一位的二进制数,然后对于G1那么就选择出对应位为D的,然后对应的H的二进制第一位为1的,在下面打上√。

异或的原理为

P1 = D7⊕D5⊕D4⊕D2⊕D1 = 1详细过程:1⊕0⊕1⊕1⊕0=1

P2 = D7⊕D6⊕D4⊕D3⊕D1 = 0

P3 = D8⊕D4⊕D3⊕D2 = 1

P4 = D8⊕D7⊕D6⊕D5 = 0

第三步

获得海明码,将P的位置替换好。
011001111001

第四步

海明码的验错
原理

  • 将对应的校验位进行异或运算,即 Si = Pi ⊕ Pi’
  • 若四位校验码为 0000,则表明该码字传输无误
  • 若四位校验码不全为零,则将校验码的结果按低位到高位排布,即 S4S3S2S1,将此校验码转化成十进制数,表示海明码对应位数出现了错误。

假设发送海明码为1100110,接受海明码为1100100,这个时候G3G2G1=000,信息正确,从中提取有效信息为1101(也就是去掉P位之后,剩下的D位)
若海明码位1110110(D4D3D2P3D1P2P1),有效信息为1111(D4D3D2D1)
G3 = P3⊕D2⊕D3⊕D4=0⊕1⊕1⊕1=1
G2 = P2⊕D1⊕D3⊕D4=1⊕1⊕1⊕1=0
G1 = P1⊕D1⊕D2⊕D4=0⊕1⊕1⊕1=1

对应G3G21=101(十进制为5,对应D2),然后将D2求反获得信息为1101

如果大家觉得有用的话,可以关注我下面的微信公众号,极客李华,我会在里面更新更多行业资讯,企业面试内容,编程资源,如何写出可以让大厂面试官眼前一亮的简历等内容,让大家更好学习编程,我的抖音,B站也叫极客李华。大家喜欢也可以关注一下

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

极客李华

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

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

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

打赏作者

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

抵扣说明:

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

余额充值