海明码计算及其纠错原理详解

海明码计算及其纠错原理详解  
hello,大家好!相信很多刚刚学习网络知识或者正在学习的朋友都曾对海明码这个东西迷惑不解!和大家一样,我也是其中一个迷惑的人之一!但是今天我终于明白了其中的道理!特写下来与大家一起分享,不当之处,欢迎指正!这里我从例子入手,给大家讲讲海明码纠错的原理!还有朋友对异或运算不了解吗?好吧!肯定有朋友不知道的,这里我简单给大家说明下!异或算符的符号表示是 圆圈中间一个加号。运算法则总结两句话就是:异为1,同为0。换言之,1 1=0,1 0=1。现在请大家闭上眼睛想一想,这种运算将在海明码纠错的过程中起到一个什么作用呢?我给大家举个例子,你就明白了!S=a1 a2.........an-1 an=0,假设其中ak=0,那么当ak由0变为1时,S会怎样变化呢?这里很容易证明,S将由0跳变为1。可能这里有朋友会关心如果数列中有两位数据发生变化呢?其实两位的话可以刚好抵消,但是这里我们是无需关心的,因为这里我们只讨论海明码纠正一位错的情况!说到这,想必大家对异或运算都了解了吧!那我们就开始吧!海明码解说开始!假设要传输的数据是a4a3a2a1,数据位长度为4位,设校验位长度为m,那么应该满足2m-1>=m+4。解出,m=3。这个不等式要解释吗?好吧,我给大家解释下,校验位为m位,那么,校验码可以表示的最大十进制数字为2m-1,去掉一位的原因是全0表示传输的数据没有错误!校验码表示能够纠正的二进制数字位数,为了保证能够纠正数据位最高位。那么2m-1至少应该大于等于数据位和校验位长度的总和!好了,设校验码为r3r2r1。根据海明码规定,校验位应放在数据位的2i-1的位置,整理好后设为M7M6M5M4M3M2M1。
1.jpg (21.03 KB)
2011-10-24 08:28
好了,最后的问题,怎么计算校验码呢?它怎么纠错呢?这里我们设海明码的监督关系式为S3S2S1。请大家仔细想一想,S1是不是代表三位二进制校验码的最低位,让我们看看有多少位数字参与了S1的运算,很容易看出M1、M3、M5、M7,所以S1=M1 M3 M5 M7(为什么是这样呢?这里也给大家说明一下。我们看M的下标,它代表什么呢?明白吗?它代表的是数字在传输数据的第几位。7=4+2+1,5=4+1,3=2+1,1=1。可见,这几位数字均参与了第一位的运算,这样,S1=1就能代表数据位的第一位出错了!),同理,S2=M2 M3 M6 M7,S3=M4 M5 M6 M7。我们再来看这三个监督关系式
2.jpg (13.92 KB)
2011-10-24 08:28
上面我们说到,要想数据位没有错误,S3S2S1=000,通过这可以计算出r3r2r1,因为S1=0,根据异或运算,将M3 M5 M7看作一个整体,M1=M3 M5 M7,r1=M1。同理可以计算出r2r1。那么纠错到底是怎么实现的呢?请大家睁大眼睛仔细看上面三个监督表达式。正常情况下,S3S2S1均为0,我们假设M3出现了错误,发生了跳变,那么S2S1将变成什么呢?如果你不知道的话请往回去看看我说的关于异或运算的知识。由上面的监督关系式发现M3参与了S2S1的运算,所以在M3发生跳变的情况下S2S1也将发生跳变,由0变为1,但由于S3未参与M3的运算,其值不变,仍为0。所以监督关系式S3S2S1=011=3,所以在传输数据的第三位出现了错误。同理,可发现M6参与了S3S2的运算,当运算出错时,监督关系式为110=6,也刚好可以判断出是传输数据的第六位出错了。其它的数据位我就不一一举例了,说到这里,我相信大家应该都对海明码的原理有所了解了吧!
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值