计算机系统知识(一)—海明码纠错

  从上篇博客我们知道如何校验海明码,今天学习一下海明码的纠错。

  海明码的纠错步骤我的理解是这样的:

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

  2. 根据校验位来异或求校验位的接收码;

  3.判断校正因子。将校验的最后结果转换成十进制,然后将该位1变0(或0变1)即可。

例如:

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

  1. 首先进行分析2^r>=k+r+1,求得r=4;

  2. 根据上篇的过程,可以知道

        r3=I8⊕I7⊕I6⊕I5

        r2=I8⊕I4⊕I3⊕I2

        r1=I7⊕I6⊕I4⊕I3⊕I1

       r0=I7⊕I5⊕I4⊕I2⊕I1

 如图所示

12

11

10

9

8

7

6

5

4

3

2

1

位数

1

1

0

0

 

0

1

0

 

0

 

 

信息位

 

 

 

 

1

 

 

 

 0

 

 0

0

校验位

3.求校验因子

   校验因子很简单就是将得出的校验位同校验的信息位再进行一次异或

  S3=r3⊕I8⊕I7⊕I6⊕I5

  S2=r2⊕I8⊕I4⊕I3⊕I2

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

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

得出的结果为S3S2S1S0=1001,转换为10进制为9,即第九位出错,将第九位的0改为1即可。

如果得出的结果S3S2S1S0全为0,那么证明传输正确。

结论:海明码就是这样利用多组数位的奇偶性来检错和纠错。不过这样也只能对其中的一位信息进行纠错,这是它的不足之处。



  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 17
    评论
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值