计算机基础知识——海明码

校验位位数的确定

设数据位有m(message)位,校验位有p(parity)位,则校验码一共有2^p种取值,其中只有一种取值是正确的,所以为了保证校验和对错误数据的修改,必须满足:
2^p-1 >= m + p
解释:右侧是传输数据的总位数(由于校验码也进行传输,所以也有可能出错)。

校验码的位置

按照规定校验码应该放在2^n(n=0,1, 2…)位置上

校验码生成过程

假设要传输的数据是1010,m=4, p=3

位数(二进制编号)1(001)2(010)3(011)4(100)5(101)6(110)7(111)
位数对应的编码p1p21p3010

从表中可以看到由于校验码p的位数总是处于2的整数倍,所以其位数对应的二进制编码只有一位为1,其余全是0,这也说明任何位数都可以由p表示。

求取p

要求p首先需要校验位和信息位建立关系

第三位为1p1(001)m3(011)m5(101)m7(111)
第二位为1p2(010)m3(011)m6(110)m7(111)
第一位为1p3(100)m5(101)m6(110)m7(111)

代入数据1010

校验位奇校验偶校验---
p1(001)01100
p2(010)10110
p3(100)01010

这里说的奇校验和偶校验指的是校验位和信息位关系的二进制编码1的个数加一后为奇数还是偶数。

举例

假设发射端分别发射了奇校验的海明码(确保发射时码一定是正确的)

0110010

假设接收端收到的奇校验数据为

-1234567
0110110
e1p1m3m5m7
e2p2m3m6m7
e3p3m5m6m7

带入数据

e10110
e21110
e30110

按照奇校验规则

e3e2e1
101

说明第五位出错了,正确的二进制数应该为

-1234567
0110010

如果没有出错e3,e2,e1应该全是0

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

艾醒(AiXing-w)

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

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

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

打赏作者

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

抵扣说明:

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

余额充值