第六百八十六章 汉明码(纠错码) (第1/2页)

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

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

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

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

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

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

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

1.计算校验位数

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

如K=5,则要求2r?r≥5+1=6,根据计算可以得知r的最小值为4,也就是要校验5位信息码,则要插入4位校验码。如果信息码是8位,则要求2 r? r≥ 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,……位(对应20、21、22、23、24、25,……,是从最左边的位数起的),这样一来就知道了信息码的分布位置,也就是非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^(n-1)位后再跳过i位,然后再连续校验2^(n-1)位,再跳过2^(n-1)

本章未完,点击下一页继续阅读。