如何计算海明冗余码及如何纠错

首先要知道异或运算(xor)符号:⊕

1和1、0和0异或等于0,01和10异或等于1

怎么算海明冗余码

假如数据码长度为k,再加上长度为r的校验码,r位的校验码可以表示2^ r种不同情况,那么我们要求2^ r大于k+r这样我们才可以表示任意出错的数据码位数。

考察数据码:1011

我们规定校验码放在1,2,4,8,16等2的幂次位上,这里按照上面要求算一下r最小取多少,算完r取3,即三位校验码p1/p2/p3分别放在1,2,4位上

即我们的冗余码应该是这样的形式:p1、p2、1、p3、0、1、1 三个校验码和四个数据码组成。

下面看下四个数据位都分别被哪几个校验位校验:
1:处在第三位,3=1+2,即被p1、p2校验
0:处在第五位,5=1+4,即被p1、p3校验
1:处在第六位,6=2+4,即被p2、p3校验
1:处在第七位,7=1+2+4,即被p1、p2、p3校验

然后就依据这个被校验关系计算冗余码:
p1=1异或0异或1(1011中除了第三位的1都被p1校验了,所以把被p1校验的全部异或起来),算完等于0
同理p2=1异或1异或1=1,p3=0异或1异或1=0
故最终的海明冗余码就是:0110011

怎么纠错

还是上面的例子:上级传过来0110111(第五位和上面不一样)的海明冗余码,1、2、4位是校验位,怎么找到出错的位?
我们把每一位校验位和它校验的所有数据位做异或计算。
(每个校验位校验哪几个数据位前面讲的够清楚了)
即:p1=0,p2=1,p3=0
g1=p1异或1异或1异或1=1
g2=p2异或1异或1异或1=0
g3=p3异或1异或1异或1=1
然后我们把g1、g2、g3连起来反过来,即g3g2g1为101(当然这里不反过来也是101),101表示十进制的5,就是说第五位出错了,看一下0110111确实是第五位和上面的0110011不一样,所以这个冗余码是有效的

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值