海明码

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

海明码

有了奇偶校验码的基础,就不难理解海明码了。海明码实际上是奇偶校验码的一个扩充。奇偶校验码只能检测错误而不能纠正错误,海明码能检测出两位错误并纠正一位错误,下面就介绍一下海明码的工作原理。

在奇偶校验中,我们假设发送端有K位信息位(k = n – 1,n代表码元位数),表示为a1 ~a n-1 , 在信息位后面加上一位奇偶校验位a0,就构成了a0~a n的n位码元,则接收端可按照监督关系式s=a0+a1+…+a n-2+a n-1(s为校验因子)来进行数据校验。从奇偶校验的工作原理可以看出奇偶校验只有一个冗余位(对应一个监督关系式和一个校验因子),因此奇偶校验只能判别两种状态,当s=0表示正确,s=1表示出错。可以设想一下,若增加冗余位亦即增加监督关系式和校验因子,便能判别更多的状态,海明码正是基于这一点工作的。

上面讲到海明码通过增加冗余位来进行错误的检测和纠正,那么对于k位的信息需要增加多少个冗余位才能满足检错并纠正1位错误的要求呢?

假设信息位有k位,校验位(冗余位)为m,那么m位的校验码可以生成2m个校验值,显然数据被正确传输的状态只有一个,用2m个值中的一个值来表示,则其余的2m-1个值可用来表示错误的状态,如果能满足:2m -1≥k+m (k+m 为编码后的总长度),在理论上m位校验码就能判断出是哪一位数据(包括信息位和校验位)出现错误。下面用示例加以说明:

例(1):假设信息位k=4,求足以判别出错位位置的校验码所需的位数m。

解:由2m -1≥k+m , k=4可知

2m ≥5+m 即m≥3

即至少需要3位冗余位(对应产生3个校正因子和3个监督关系式), 形成23=8种判断状态才足以能够判断出出错数据位的位置

假设编成的n位海明码为h n h n-1…h2h1,则海明码的编码规律如下:1.校验位分布:在n位的海明码中,各检验位分布在位号为2n 的位置,即检验位的位置分别为第1,2,4,8,…,2n位,数据位按照原来的顺序插入其中。若信息码为k5k4k3k2k1,则编成的海明码为…k5r4k4k3k2r3 k1r2r1,此分布关系可以用下表表示,其中k i 表示信息位,下标从1开始。r i表示校验位,下标从0开始。

表(1)计算校验位分布表

2.检验关系:海明码的每一位h i要有多个检验位来检验。检验关系是被检验位的位号等于相关检验位的位号之和。在表(1)中,k5(位号为9)需要r4(位号8)和r0(位号1)来检验。同理,k 4需要由r2、r1和r0 检验,k3由r2、r1 检验,以此类推,为便于分析,我们列表如下:

表(2)校验关系对照表

海明码规定各校验位的值是由此校验位所参与验证的各个数据位的值异或运算求得,从表(2)我们可以得知,校验位r2参与验证了k4 、k3、k1,由此我们可以求得r2=k4⊕k3⊕k2同理r0=k5 ⊕k4⊕k2⊕k1 ,r1=k4 ⊕k3⊕k1 ,r2=k5 。把求得的个校验位的值和各数据位的值按照表(1)的序列排列便得到了所要验证数据的海明码。

例(2):假设发送端有数据11000011要发送,试求出它的海明码。

解:信息位有8位数据,根据公式2m -1≥k+m,必须有4位检验码来进行错误校验。假设校验码为r3 r2 r1 r0,把数据和校验码排列如下:

其中,校验关系列表如下:

有上表可得:r0=1⊕0⊕0⊕1⊕1=1

r1=1⊕0⊕0⊕0⊕1=0

r2=1⊕0⊕0⊕1=0

r3=1⊕1⊕0⊕0=0

所以,校验码为0001,按照8、4、2、1的序列排列得到11000011的海明码编码110000010101。

相关文档
最新文档