计算机网络谢希仁海明码,海明码求解公式规律(转载自计算机网络高分笔记)...

海明码求解的具体步骤:

1.确定校验码的位数r

2.确定校验码的位置

3.确定数据的位置

4.求出校验码的值

假设要推到D=101101这串二进制数的海明码,应按照以下步骤。

1.确定校验码的位数r。

数据的位数k=6,按照公式来计算满足条件r的最小值,如下:

2r-1≥k+r

2r≥7+r

解此不等式,满足不等式的最小r为4,也就是D=101101的海明码应该有6+4=10位,其中原数据6位,效验码4位。

2.确定校验码的位置。

不妨假设这4位效验码分别为P1、P2、P3、P4;数据从左到右为D1、D2、……、D6.编码后的数据共有6+4=10位,设为M1、M2、……、M10.

校验码Pi(i取1,2,3,4)在编码中的位置为2i-1,见表3-1.

表3-1  校验码Pi在编码中的位置

M1

M2

M3

M4

M5

M6

M7

M8

M9

M10

P1

P2

P3

P4

3.确定数据的位置。

除了效验码的位置,其余的就是数据的位置,填充进去即可,于是可以把数据信息先填进去,见表3-2的“乙”行。

表3-2 数据在编码中的位置

M1

M2

M3

M4

M5

M6

M7

M8

M9

M10

P1

P2

D1

P3

D2

D3

D4

P4

D5

D6

1

0

1

1

0

1

4.求出校验码的值。(精华)

这个公式有规律可循,但基本没有任何教材讲过,无意在一篇论文中看到。

假设出错位为e1、e2、e3、e4,现在需要做的就是将M1、M2、……、M10和e1、e2、e3、e4的关系对应出来,只要这个关系出来了,所有问题就都解决了。演示几个。

M1下标中的1可以表示成0001,这里的0001分别对应e4、e3、e2、e1(倒过来看),由于e1的值为1,因此M1只和e1有关;M3下标中的3可以表示成0011,因此M3和e1

、e2有关;M7下标中的7可以表示成0111,因此M7和e1、e2、e3有关。其他以此类推,只需将这些有关的用异或符号“⊕”连接起来即可,最后可得以下公式:

e1=M1⊕M3⊕M5⊕M7⊕M9

e2=M2⊕M3⊕M6⊕M7⊕M9

e3=M4⊕M5⊕M6⊕M7

e4=M8⊕M9⊕M10

然后将表3-1中求出的数据对应过来,即

e1=P1⊕D1⊕D2⊕D4⊕D5

e2=P2⊕D1⊕D3⊕D4⊕D6

e3=P3⊕D2⊕D3⊕D4

e4=P4⊕D5⊕D6

如果海明码没有错误信息,e1、e2、e3、e4都为0,等式右边的值也得为0,由于是异或,因此Pi(i取1,2,3,4)的值跟后边的式子必须一样才能使整个式子的值为0,即

P1=D1⊕D2⊕D4⊕D5

P2=D1⊕D3⊕D4⊕D6

p3=D2⊕D3⊕D4

P4=D5⊕D6

下面只需要将值代入计算即可:

P1=D1⊕D2⊕D4⊕D5=1⊕0⊕1⊕0=0

P2=D1⊕D3⊕D4⊕D6=1⊕1⊕1⊕1=0

p3=D2⊕D3⊕D4=0⊕1⊕1=0

P4=D5⊕D6=0⊕1=1

接下来把Pi的值填写到表3-1中,见表3-3的“丙”行,就可以得到海明码。

表3-3 “丙”行中的数据

M1

M2

M3

M4

M5

M6

M7

M8

M9

M10

P1

P2

D1

P3

D2

D3

D4

P4

D5

D6

0

0

1

0

0

1

1

1

0

1

故101101的海明码为0010011101.

但是知道了怎么编写海明码,还需要知道怎么校验,方法如下。

现在假设第5位出错了,也就是第5位在传输的过程中被改为“1”,即得到的数据为0010111101.现在要找出错误的位置(假设现在不知道出错的位置)。

继续使用:

e1=M1⊕M3⊕M5⊕M7⊕M9=0⊕1⊕1⊕1⊕0=1

e2=M2⊕M3⊕M6⊕M7⊕M9=0⊕1⊕1⊕1⊕1=0

e3=M4⊕M5⊕M6⊕M7=0⊕1⊕1⊕1=1

e4=M8⊕M9⊕M10=1⊕0⊕1=0

按照e4、e3、e2、e1的排序方式得到的二进制序列为0101,恰好对应十进制5,这样就找到了出错的位置,即出错位是第5位。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值