理论教育 海明码在计算机网络技术中的应用

海明码在计算机网络技术中的应用

时间:2023-11-22 理论教育 版权反馈
【摘要】:海明码能够自动纠正一位错。生成海明码时的一项基本考虑是确定最少的校验位数k。海明码是由数据位和校验位组成的一种排列,排列方式由海明码的编码规则确定。数据位则依次从低到高占据海明码中剩下的位置。表3-1海明码的位号等于参与校验该位的校验位的位号之和根据校验位与数据位的对应关系表,把每个数据位划分在形成不同校验位的偶校验值的逻辑表达式中。

海明码在计算机网络技术中的应用

海明码是由Richard Hamming在1950年提出的一种具有纠错能力的校验码。海明码是一种多重奇偶校验系统,它的全部码字由原来的数据位和附加的奇偶校验位组成,每一个奇偶位被编在码字的特定位置上,是一种非系统码。海明码能够自动纠正一位错。

生成海明码时的一项基本考虑是确定最少的校验位数k。对于只能纠正一位错的校验码,校验位的位数k和数据位的位数N之间的关系由下面的海明不等式给出:

2kn+k+1

这个公式表明,k个校验位的状态组合应能表示n位数据位哪一位出错、k个校验位哪一位出错和无错这n+k+1种情形。

海明码是由数据位和校验位组成的一种排列,排列方式由海明码的编码规则确定。设k个检验位为PkPk-1P1n个数据位为DnDn-1Dn-2D1,产生的海明码为Hk+nHk+n-1H1,则海明码的编码规则如下。

1)Pi在海明码的第2i-1位置,即除了最高位,校验位一般放在第1、2、4、8位。数据位则依次从低到高占据海明码中剩下的位置。

2)海明码中的任一位都是由若干校验位来校验的。具体的对应关系如下:被校验的数据位的下标等于所有参与校验该位的校验位的下标之和。而校验位则由自身来检验。一般采用偶校验方法。

海明码的编码规则表明,设计海明码的关键是把每个数据位合理、均匀地分配到相应的校验位中,以确保能发现码字中任何一位出错,并能指出是哪一位出错。实现纠错时,只要对出错位求反就可得到该位的正确值。

现在介绍海明码的编码方法。假设数据位是8位,用D8D7D6D5D4D3D2D1表示,根据海明不等式的公式,应安排4位校验位。假设校验位用P4P3P2P1表示,则生成的海明码具有下列的排列关系,如表3-1所示。

表3-1 海明码的位号等于参与校验该位的校验位的位号之和

978-7-111-31053-2-Chapter03-15.jpg

根据校验位与数据位的对应关系表,把每个数据位划分在形成不同校验位的偶校验值的逻辑表达式中。例如,D8位于H12,12=4+8,P3的位号是4,P4的位号是8,即D8参与P3P4的校验,由此得出海明校验码的编码逻辑表达式如下:

P1=D7D5D4D2D1

P2=D7D6D4D3D1(www.daowen.com)

P3=D8D4D3D2

P4=D8D7D6D5

例如,如果数据为00110011,把校验位P4P3P2P1按编码规则插入到数据中:0011P4001P31P2P1,根据上式计算出P4=0,P3=1,P2=0,P1=1,就得到海明码001100011101。

接收时,分别按下式计算S4S3S2S1,并对S4S3S2S1进行译码:

S1=P1D7D5D4D2D1

S2=P2D7D6D4D3D1

S3=P3D8D4D3D2

S4=P4D8D7D6D5

如果S4S3S2S1为0000,则表明传输无错,若不是0000,则译码值就是出错的海明码位号。例如,如果S4S3S2S1=0111,则说明H7出错,即D4传输出错。

从上面的表达式中可以看出,不同的数据位出现在Pi项中的次数是不一样的,例如,D4D7出现了3次,而其余的数据位仅出现了2次,当任一个数据位发生变化时,必将引起至少两个Pi值的变化,因此,海明码的码距为3,它可以纠正一位错,或检测2位错。

为了均匀分配数据位,以便平衡对每一个数据位的校验能力,在上面的海明码前再加上一位校验位P5,P5的逻辑表达式安排如下:

P5=D8⊕D6⊕D5⊕D3⊕D2⊕D1

这样,每一位数据位都均匀出现在3个Pi值的形成关系中,当任一个数据位发生变化时,必将引起3个Pi值的变化,因此,这种海明码的码距为4,它可以纠正一位错,并能检测2位错。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈