现代塑料工业网 - 玄幻小说 - 数学心在线阅读 - 第六百八十六章 汉明码(纠错码)

第六百八十六章 汉明码(纠错码)

    信号在传输的过程中会不可避免的发生错误,而纠错码就可以发现和改正这个错误。

    1948年,香农在《通信的数学理论》中信道编码定理指出:只要采用适当的纠错码,就可以在多类信道撒谎能够传输消息,误码率可以很。

    1950年,汉明发现了可以纠正一个独立错误的线性分组码。

    格雷给粗一种可以纠正三个错误的完备码。

    海明码是一个可以有多个校验位,具有检测并纠正一位错误代码的纠错码,所以它也仅用于信道特性比较好的环境中,如以太局域网中,因为如果信道特性不好的情况下,出现的错误通常不是一位。

    海明码的检错、纠错基本思想是将有效信息按某种规律分成若干组,每组安排一个校验位进行奇偶性测试,然后产生多位检测信息,并从中得出具体的出错位置,最后通过对错误位取反来将其纠正。

    要采用海明码纠错,需要按以下步骤来进行:1、计算校验位数;2、确定校验码位置;3、确定校验码;4、实现校验和纠错

    1.计算校验位数

    要使用海明码纠错,首先就要确定发送的数据所需要要的校验码位数。它是这样的规定的:假设用N表示添加了校验码位后整个信息的二进制位数,用K代表其中有效信息位数,r表示添加的校验码位,它们之间的关系应满足:N=K+r≤2r-1

    如K=5,则要求2rr≥5 1=6,根据计算可以得知r的最值为4,也就是要校验5位信息码,则要插入4位校验码。如果信息码是8位,则要求2rr≥8 1=9,根据计算可以得知r的最值也为4。

    信息码位数与校验码位数之间的关系

    信息码位数分别为1、2~4、5~11、12~26、27~57、58~120、121~247的时候,则校验码位数分别为2、3、4、5、6、7、8。

    2确定校验码位置

    上一步我们确定了对应信息中要插入的校验码位数,但这还不够,因为这些校验码不是直接附加在信息码的前面、后面或中间的,而是分开插入到不同的位置。但不用担心,校验码的位置很容易确定的,那就是校验码必须是在2^n的位置,如第1、2、4、8、16、32,……位,这样一来就知道了信息码的分布位置,也就是非2^n位置,如第3、5、6、7、9、10、11、12、13,……位。

    举一个例子,假设现有一个8位信息码,即b1、b2、b3、b4、b5、b6、b7、b8,它需要插入4位校验码,即p1、p2、p3、p4,也就是整个经过编码后的数据码共有12位。根据以上介绍的校验码位置分布规则可以得出,这12位编码后的数据就是p1、p2、b1、p3、b2、b3、b4、p4、b5、b6、b7、b8。

    现假设原来的8位信息码为,因现在还没有求出各位校验码值,现在这些校验码位都用“?”表示,最终的码字为:??1?001?1101。

    3.确定校验码

    这些校验码的值不是随意的,每个校验位的值代表了代码字中部分数据位的奇偶性,其所在位置决定了要校验的比特位序粒总的原则是:第i位校验码从当前位开始,每次连续校验2^位后再跳过i位,然后再连续校验2^位,再跳过2^位,以此类推。最后根据所采用的是奇校验,还是偶校验即可得出第n位校验码的值。

    4.校验与纠错

    把以上这些校验码所校验的位分成对应的组,则在接收赌对各校验位再进行逻辑“异或运算”,如果采用的是偶校验,正常情况下均为0。

    如果最终发现只是一个校验组中的校验结果不符,则直接可以知道是对应校验组中的校验码在传输过程中出现了差错,因为所有校验码所在的位是只由对应的校验码进行校验;如果发现多组校验结果不正确,则查看这些组中公共校验的数据位,以最终确定是哪个数据位出了差错;最后,对所找到的出错数据位取反即可实现纠错。

    如计算出的每组的校验结果为p1、p2、p3、p4,均为0则正确,有一个不为0的则出错的位置在p1 10p2 100p3 1000p4的位置处。