纠错编码--海明码(动一发而牵全身)

纠错编码–海明码

  • 海明码:发现双比特,纠正单比特错
  • 工作原理:动一发而牵全身

假设发送4位数据,在它上面加上冗余信息(冗余码,校验码),但是校验码很厉害,不但可以校验自身,同时还可以校验几位

发现有一些数据同时被几个校验码同时作用;

假如第3位数据在接收端的时候发生了错误,由原来的0变成了1,我们就可以通过校验码检测出是哪一位发生错误,检测发现第3位发生错误,它是被几位校验码牵制着,只要它产生错误都能对其他几位校验码产生影响,动一发而牵全身(改变一个数据或者一个数据发生错误,使得很多校验码察觉出来,这些校验码互相检查,最后确定出错的数据)

  • 工作流程:
  1. 确定校验码位数r

海明不等式: 2^r-1>=k+r
r:为冗余信息
k:信息位
假设要发送数据:D=101101
数据的位数:k=6
满足不等式的最小r(冗余位)为4
也就是D=101101的海明码应该有6+4=10位
其中原数据6位,校验码4位

  1. 确定校验码和数据的位置

假设这4位校验码分别为P1,P2,P3,P4:数据从左到右为D1、D2、D3、D4、D5、D6
P的确定:放在2的几次方的位置(只能放在2^0 、2^1 、2^2、 2^3…对应数字为1、2、4、8…)
D的确定:把P填完剩下的空补上。

  1. 求出校验码的值

D=101101填入:在这里插入图片描述
P1对应校验的二进制第一位为1(从右往左数),找所有二进制数第一位为1的数,
所以上面P1可以检验的有P1,D1,D2,D4,D5
如何处理以上数据呢?
令所有要校验的位异或=0(相同为0,不同为1)
代入数据
在这里插入图片描述

P2对应数据第二位为1,找第二位为1(从右往左数),找所有二进制数第而位为1的数,

所以上面P2可以检验的有P1、D1、D3、D4、D6
令所有要校验的位异或=0(相同为0,不同为1)
代入数据
在这里插入图片描述
P3同理:P3=0
P4:P4=1
综上所述:校验码为0001
所以101101的海明码为0010011101(P和D合并在表格中)
在这里插入图片描述

  1. 检错并纠错
    假设海明码传输的过程中,第五位出错,因此接收到的数据位0010111101(由0变为1)。但是接收端不知道哪位出错,找出错误位。
    如何找呢?
    令所有要校验的位异或运算
    校验位数的第三步一样,
    P1:
    在这里插入图片描述
    P2:
    在这里插入图片描述P3:
    在这里插入图片描述
    P4:
    在这里插入图片描述
    P1P2P2P2=0101=5
    所以出错位为第5位

把出错的位改为其反码,将1变为0

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值