海明码详解

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

海明码是由R·hamming 在1950所提出的,它可以纠正一位差错的编码,但它的编码效率要比正反码高,现以奇偶校验码为例,

a0=a1⊕a2⊕a3⊕…⊕a n-1

其中a0是校验码,接收时可按关系式

S= a0⊕a1⊕a2⊕a3⊕…⊕a n-1

进行计算时,若S=0则无差错,若S=1则表明出错,则上面的S式子称为监督关系式,S 称为校正因子。

在奇偶校验的情况下,只有一个监督关系式和一个校正因子,其取值只有两种可能(0或1),分别表示正确和出错两种情况,而不能指出出错的位置。若有两个校正因子,则有四种可能,一种表示无错,另三种表示出错,并可以指出出错的位置。

一般来说,若信息位为k位,冗余位为r位,则数据位n=k+r,用r的监督关系式来产生r个校正因子,区分无错和在n个不同的位置的一位错,则要求满足公式

2 r≥ n+1 或 2 r≥ k+r+1

此式子称为海明公式,r叫海明距离,若k=4时则r>=3,当取r=3时,n=k+r=4+3=7

1.编码步骤

(1)根据信息位数,确定校验位数,2r≥k+r+1,其中,k为信息位数,r为校验位数。求出满足不等式的最小r,即为校验位数。

表1-2有效信息位数k与校验位位数r的对应关系

(2)计算机校验位公式。

表1-3其实可以当成一个公式来套用,如有已经编码的数据1100 1001 0111。我们只需把这些数据填充到校验公式,即可得到信息位与校验位。

表1-3 校验位公式表

填充的方法是这样的,首先看数据的最低位(即右边第1位),最低位为1,把1填充在公式表的r0位置,接着取出数据的次低位数据(即右边第2位),把它填充到r1位置,把右边第3位数填充到I1位置。依此类推,我们可以得到表1-4。

表1-4 校验位公式实例表

表中第2行数据为1100 001 1,这就是数据1100 1001 0111的编码信息,而表格第3行是1 011,这便是校验位。

注意:

·校验位

r n 所在位数为

2n

·信息位下标从1开始,而校验位下标从0开始。

例如:I 8 对应的第十二位12=23+22,I 76位10=23+21,I 5 对应的第九位9=23+20,一直写到I 1对应的第三位。

校验位r n 由前面位数写成2的幂之和中包含2n 的位数对应的信息位之和构成

r 38765

注意:其中“⊕ ”是异或运算,在异或运算中:

0⊕ 1=1; 1⊕ 0=1; 0⊕ 0=0; 1 ⊕1=0;

(3)求校验位。根据上面我们所说的计算公式可以求出校验位。

(4)求海明码。根据上面的表格填充后,写出海明码。

2.纠错步骤

(1)根据海明码的信息位和校验位的分布规则,找出接收到的数据的信息位以及校验位。

表1-5校验位公式表

如有已经编码的数据1100 1001 0111,则可以根据上表得到编码的信息为:1100 001 1;校验位为:1 011,详细过程在“编码步骤”已详细说明。

2)接收端对校验位进行验证

S n= r n ( 校验)⊕r n (接收)

(3)判断校正因子是否有错,并改正。

S n S n-1S n-2……S0二进制转成十进制对应的是哪位就是哪位出错,将其改正完成纠错。如1001为第九位,将第九位1变0 (或0变1) 即可。

例题1求信息1011的海明码。

解答:

我们可以按照上面所说的编码步骤进行解题:

(1)2r≥4+r+1,确定校验们为3位23≥4+3+1。

(2)列出公式表格。

7=22+21+20,6=22+21,5=22+20,3=21+20

r2=I4⊕I3⊕I2

r1= I4⊕I3⊕I1

r0= I4⊕I2⊕I1

(3)根据公式得r 2 =0,r1 =0,r0=1。过程如下:

r2=I4⊕I3⊕I2=1⊕0⊕1=0

r1= I4⊕I3⊕I1=1⊕0⊕1=0

r0= I4⊕I2⊕I1=1⊕1⊕1=1

(4)加入表格。

表1-7 对表1-6填充数据后的表格

则海明码为1010101

例题2

信息位8位的海明码,在接收到报文110010100000,判断传输是否出错,并求出发送端发送的信息位。

解答:

2r≥8+r+1,确定校验位为4位24≥4+4+1。

表1-8校验位公式表

按照上面的海明码信息位和校验位的分布情况表,对接收数据进行分解:

表1-9 对表1-8填充数据后的表格

从而得到信息位为11000100,校验位为1000。

因为12=23+22 ;11=23+21; 9=23+20;7=22+21+20; 6=22+21 ;5 =22+20;3=21+20 ;

可得发送端校验位:

r3= I8⊕I7⊕I6⊕I5;

r2= I8⊕I4⊕I3⊕I2;

r1= I7⊕I6⊕I4⊕I3⊕I1;

r0= I7⊕I5⊕I4⊕I2⊕I1。

接收端可根据以下关系验证是否出错

S3= r3⊕I8⊕I7⊕I6⊕I5;

S2= r2⊕I8⊕I4⊕I3⊕I2;

S1= r1⊕I7⊕I6⊕I4⊕I3⊕I1;

S 0= r 0⊕ I 7⊕ I 5 ⊕ I 4 ⊕ I 2⊕I 1;

注意:其中的r n 为接收端校验位。

由上面的算式得S 3 S 2 S 1 S 0=1001,将1001转成十进制是9,从而得知是原信息位第九

例题3 S

0=a 0 S 1=a 1⊕a 4⊕a 5⊕a 6

S 2=a 2⊕a 3⊕a 5⊕a 6

接收端收到的码字为:a 6a 5a 4a 3a 2a 1a 0=1010100

那最多一位错的情况下发送端的发送信息位是什么?

解答:将a 6 a 5 a 4 a 3 a 2 a 1 a 0对应的数字代入上述监督关系式得:

S 0=0⊕0⊕1⊕0=1

S 1=0⊕1⊕0 S 2=1⊕0⊕0 得出S 2S 1S 00信息应为1010101。

相关文档
最新文档