对海明码的理解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
对海明码的理解
海明码是一种多重(复式)奇偶检错系统。它将信息用逻辑形式编码,以便能够检错和纠错。用在海明码中的全部传输码字是由原来的信息和附加的奇偶校验位组成的。每一个这种奇偶位被编在传输码字的特定位置上。实现得合适时,这个系统对于错误的数位无论是原有信息位中的,还是附加校验位中的都能把它分离出来。
一个n位二进制数位串在传输过程中哪一位都有出错的可能,也就是说有n个发生错误的可能性。针对此情况,如果发送方只抽出其中一位制置奇偶校验位值,以便对其它位进行偶校验或奇校验,虽然也能检错,但无法确定错码的位置,不能纠错。如果发送方抽出其中r位(放在1,2,4,8,16……位上),给每个位制置奇偶校验位值,以便对从其它位中选择的有差异的r个位组进行偶校验或奇校验,这样,就能用含r个校验位值的逻辑组合(其所在位置可以不连续,但是,其在逻辑上是连续的)所衍生出的2r种状态对可能发生的错误进行相应范围的检测。进一步思考:如果让2r种可能发生的状态中除去一种状态反映整个位串传输正确外,剩下的2r-1种状态一一对应地反映位串中可能发生的n种错误,
那么,对r会有多大的数量要求呢?显然,r应满足下列关系式:
2r-1>=n (1)
这样,r个校验位所衍生出的2r种状态才能覆盖可能产生的n种错误。每种错误发生时才不至于漏检。
从n中扣出r个校验位n-r=k,这k个位是信息位。n=k+r,代入(1)式得:
2r-1>=k+r (2)
移项得:
2r-r>=k+1 (3)
按(3)式进行试算(试算不包括”>”——取最小值)
表1
根据经验
表2
此即r以其所衍生出的状态能覆盖的信息位数量。反过来,从k的数量,可以倒推需要多少校验位对其进行检测。
知道了信息位数量与校验位数量的关系后,怎样编海明
码呢?用一道例题加以说明。
例题
现有8位二进制数信息位串10011101等待传输,问怎样将海明校验位编入以资校验?
根据前述,8个信息位要有4个校验位来检测,于是整个位串长就是8+4=12位。表3
说明:
表3表示海明码内部的逻辑关系。它反映了海明码是按什么样的逻辑被制造出来的。
(1)按1~12的顺序给二进数制位串各位上的比特启名。
(2)把1,2,4,8位(即2i,i=0,1,2…位)安上奇偶校验
比特的名。
(3)把非2i位安上信息比特的名。
(4)按名位显示10011101,如,A2的值是10011101的第
一个“1”,依此顺推。
(5)A0的校验对象:每跳1位拉入1个对象,直到尽头。
校验对象的值模2加之和为A0的值。
(6)A1的校验对象:它旁边的A2,而后每跳2位拉入2
个对象,直到尽头。校验对象的值的模2加之和为
A1的值。
(7)A3的校验对象:它旁边的A4,A5,A6,而后每跳4
位拉入4个对象,直到尽头。校验对象的值的模2
加之和为A3的值。
(8)A7的校验对象:它旁边的A8,A9,A10,A11,已到尽
头。校验对象的值的模2加之和为A7的值。
(5)(6)(7)(8)为什么采取这样的逻辑方法(以2i位校验
非2i位)选校验对象?为的是标准统一、好记,便
于发送方和接收方按同一个规则计算校正因子S,从
而便于接收方检错纠错。
故此说明。
(9)将各校验位的值按相应位插入,形成海明码。
(10)S0是A0和A0的校验对象模2加之和,为0;S1是
A1和A1的校验对象模2加之和,为0;S2是A3和A3
的校验对象模2加之和,为0;S3是A7和A7的校验
对象模2加之和,为0。如果发生了不为0则表明:
不是校验者出错就是被校验者出错。
这个海明码——一个12位的二进数制位串中,隐含着可资互相印证的逻辑关系:一是校验与被校验(反过来是生成被生成)的关系——被校验者对校验者也有产生被产生作用。因为采取偶校验法,校验位值与被校验的信息位值群之奇偶性有同一性。当这个同一性被破坏时就会想到让被校验的信息位值群与校验位值互相印证;二是校正因子与偶校验双方的关系;三是按取位数量不同跳拉校验对象法组成的校验组之间的关系。正是这些关系为检错纠错提供了基础。
接收方收到海明码后,按编码规则计算S,若
S3=S2=S1=S0=0,则说明传输无误。反之,只要其中有一
个为1便说明传输有误。
错误分析:
一、一个错儿影响一个S
假设第一位A0在传输中由“1”变成了“0”,导致接收方在验算时S0由“0”变成了“1”——这时
接收方便知如表3的第(5)行所示的逻辑关系中出
了错值。但到底是A0错了还是第(5)行里的其他位
值出了错?尚不能确定,要分析。这时如果
S3=S2=S1=0就为找错提供了印证分析基础:因为S1=0,
印证了A2、A10传输无误;因为S2=0,印证了A4、
A6传输无误;因为S3=0,印证了A8、A10传输无误;
合计印证了A2、A4、A6、A8、A10传输无误,而这正
说明(5)行里的信息位值群正确,从而挤認出A0
错了。
纠错:把A0由“1”改成“0”。
为了以后省却印证分析的麻烦,不妨对这种12位海明码制定一个固定印证表指示:当
S3S2S1S0=0001时,A0错误。
A1、A3、A7传输错误均可用此印证分析方法找出和纠正,可定一个固定印证表指示:当
S3S2S1S0=0010时,A1错误;当S3S2S1S0=0100时,
A3错误;当S3S2S1S0=1000时,A1错误。
二、一个错儿影响两个S
假设第3位A2在传输中由“1”变成了“0”,导致接收方在验算时S0变成了“1”,S1变成了“1”。