对海明码的理解精.docx

上传人:b****3 文档编号:27347632 上传时间:2023-06-29 格式:DOCX 页数:7 大小:19.20KB
下载 相关 举报
对海明码的理解精.docx_第1页
第1页 / 共7页
对海明码的理解精.docx_第2页
第2页 / 共7页
对海明码的理解精.docx_第3页
第3页 / 共7页
对海明码的理解精.docx_第4页
第4页 / 共7页
对海明码的理解精.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

对海明码的理解精.docx

《对海明码的理解精.docx》由会员分享,可在线阅读,更多相关《对海明码的理解精.docx(7页珍藏版)》请在冰豆网上搜索。

对海明码的理解精.docx

对海明码的理解精

对海明码的理解

海明码是一种多重(复式奇偶检错系统。

它将信息用逻辑形式编码,以便能够检错和纠错。

用在海明码中的全部传输码字是由原来的信息和附加的奇偶校验位组成的。

每一个这种奇偶位被编在传输码字的特定位置上。

实现得合适时,这个系统对于错误的数位无论是原有信息位中的,还是附加校验位中的都能把它分离出来。

一个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

r

1

2

3

4

5

6

7

8

……

k

0

1

4

11

26

57

120

247

……

根据经验

表2

r

1

2

3

4

5

6

7

8

……

k

0

1

2~4

5~11

12~26

27~57

58~120

121~247

……

此即r以其所衍生出的状态能覆盖的信息位数量。

反过来,从k的数量,可以倒推需要多少校验位对其进行检测。

知道了信息位数量与校验位数量的关系后,怎样编海明码呢?

用一道例题加以说明。

例题

现有8位二进制数信息位串10011101等待传输,问怎样将海明校验位编入以资校验?

根据前述,8个信息位要有4个校验位来检测,于是整个位串长就是8+4=12位。

表3

位置序

辑关系

1

2

3

4

5

6

7

8

9

10

11

12

比特名

(1

A0

A1

A2

A3

A4

A5

A6

A7

A8

A9

A10

A11

校验位

分布

(2

A0

A1

A3

A7

信息位

分布

(3

A2

A4

A5

A6

A8

A9

A10

A11

信息

位值

(4

1

0

0

1

1

1

0

1

监督关系

(5

A0

=1

A2

A4

A6

A8

A10

S0

(6

A1

=1

A2

A5

A6

A9

A10

S1

(7

A3

=0

A4

A5

A6

A11

S2

(8

A7

=1

A8

A9

A10

A11

S3

海明

码值

(9

1

1

1

0

0

0

1

1

1

1

0

1

S

说明:

表3表示海明码内部的逻辑关系。

它反映了海明码是按什么样的逻辑被制造出来的。

(1按1~12的顺序给二进数制位串各位上的比特启名。

(2把1,2,4,8位(即2i,i=0,1,2…位)安上奇偶校验比特的名。

(3把非2i位安上信息比特的名。

(4按名位显示10011101,如,A2的值是10011101的第一个“1”,依此顺推。

(5A0的校验对象:

每跳1位拉入1个对象,直到尽头。

校验对象的值模2加之和为A0的值。

(6A1的校验对象:

它旁边的A2,而后每跳2位拉入2个对象,直到尽头。

校验对象的值的模2加之和为A1的值。

(7A3的校验对象:

它旁边的A4,A5,A6,而后每跳4位拉入4个对象,直到尽头。

校验对象的值的模2加之和为A3的值。

(8A7的校验对象:

它旁边的A8,A9,A10,A11,已到尽头。

校验对象的值的模2加之和为A7的值。

(5(6(7(8为什么采取这样的逻辑方法(以2i位校验非2i位)选校验对象?

为的是标准统一、好记,便于发送方和接收方按同一个规则计算校正因子S,从而便于接收方检错纠错。

故此说明。

(9将各校验位的值按相应位插入,形成海明码。

(10S0是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”。

对照表3所示的横竖逻辑关系看,这个错误发生过程就好似是这样:

“一枚火箭——1变0(在表3第3列底部),分出两个一模一样的弹头——A2(竖看),击中两个不同的目标——S0和S1(横看)”。

找错过程正相反:

从被破坏的两个不同的目标——S0和S1,找两个一模一样的弹头——A2,进而找出错比特值——0。

当然,这是循着逻辑关系找错,(表3只是说明了逻辑关系)。

不应理解成循表找错。

纠错:

把A2由“0”改成“1”。

并在印证表里填上当S3S2S1S0=0011时,A2错误。

按以上方法,我们同样可以发现和纠正第5位A4的错误,并在印证表里填上当S3S2S1S0=0101时,指示A4错误;可以发现和纠正第6位A5的错误,并在印证表里填上当S3S2S1S0=0110时,指示A5错误;可以发现和纠正第9位A8的错误,并在印证表里填上当S3S2S1S0=1001时,指示A8错误;可以发现和纠正第10位A9的错误,并在印证表里填上当S3S2S1S0=1010时,指示A9错误;可以发现和纠正第12位A11的错误,并在印证表里填上当S3S2S1S0=1100时,指示A11错误。

以便对这些可能发生的错误做到直接印证。

三、一个错儿影响三个S

假设第7位A6在传输中由“1”变成了“0”,导致接收方在验算时S0变成了“1”,S1变成了“1”S2变成了“1”.

对照表3看,这个错误发生过程就好似是这样:

“一枚火箭——1变0,分出三个一模一样的弹头——A6,击中三个不同的目标——S0、S1和S2”。

找错过程正相反:

从被破坏的三个不同的目标——S0、S1和S2,找三个一模一样的弹头——A6,进而找出错比特值——0。

纠错:

把A6由“0”改成“1”。

并在印证表里填上当S3S2S1S0=0111时,指示A6错误。

按以上方法,我们可以发现和纠正第11位A10的错误,并在印证表里填上当S3S2S1S0=1011时,指示A10错误.

用一、二、三所准备的印证表项制表如下:

印证表表4

S3S2S1S0

0001

0010

0011

0100

0101

0110

出错

A0

A1

A2

A3

A4

A5

S3S2S1S0

0111

1000

1001

1010

1011

1100

出错

A6

A7

A8

A9

A10

A11

如果在传输中同时发生两个错误,就很不好办。

例如,A0错变为0,A1也错变为0,接收方在验算时发现S1=S0=1,如果按《印证表》查对则判为0011A2错误,结果会造成错上加错的情形,如同法官错判了好人,放走了原凶一样。

为避免此种情况发生还是应该用印证分析法印证一翻:

由S3=S2=0可以印证A4,A5,A6,A8,A9,A10在传输中无问题,但是还有A0,A1,A2无法印证。

这三个之中,A0和A1有可能同时出错而引起S1=S0=1,A1和A2也有可能同时出错而引起S1=S0=1,这两种可能性均无法排除,怎么办?

不要当那个“错判了好人,放走了原凶”的法官,科学的态度是搞不清楚时放弃判断,请发送方再发一次。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 电大

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1