海明码

海明码的思想经常用到,有必要进行深入学习。

首先,海明码是一种可以纠正一位错误的二进制编码。一种编码的纠错能力取决于该编码的码距,下面介绍码距

如图1所示的一个编码系统,用三位二进制来表示八个不同信息。在这个系统中,两个码字之间不同的位数从13不等,但最小值为1,故这个系统的码距为1。如果任何码字中一位或多位出了差错,结果这个码字就不能与其它码字区分。例如,如果传送信息001,而被误收为011,因011仍是表中的合法码字,接收方仍将认为011是正确的信息。但是,如果用四个二进数字来编8个码字,那么在码字间的最小距离可以增加到2,如图2的表中所示。

 

 

             1                                                   2

注意,图28个码字相互间最少有两位的差异。因此,如果任何码字的一个数位出差错,就成为一个不用的码字,就能检查出来。例如信息是1001,误收为1011,接收方知道发生了一个差错,因为1011表中没有,不是一个码字。然而,差错不能被纠正。因为,正确码字可以是1001111100111010。接收方不能确定原来到底是这4个码字中的哪一个。同时, 在这个系统中,偶数个(2位或4位)差错也无法发现。

为了使一个系统能纠正一位差错,码距最小是3。最小距离为3时,或能纠正一位错,或能检测二位错,但不能同时纠正一位错并检测二位错。编码信息纠错和检错能力的提高需要进一步增大编码系统的码距。图3的表概括了编码系统的码距为17时,码的纠错和检错能力。

 

图3
海明码有k个信息位,r个冗余位,构成k+r位码字。其中2 >= k+r+1:因为k+r位码字,一位出错,就有k+r种错误情况,外加一个正确的码字,即任意k+r位码总共就有k+r+1种情况。冗余位依次放在第2 i(i=0,1,2,3...)位。其余位置为信息位。4个信息位k0,k1,k2,k3;3个冗余位r0,r1,r2。 码字位置排放如下:
   
确定校验位(冗余位):第i个信息位的位数为参与校验它的校验位的位数之和。如上例7=4+2+1;6=4+2;5=4+1;3=2+1。
从上式可得,k3 要参与 r2,r1r0 的生成,k2 参与 r2r1 的生成,k1 参与 r2,r0 的生成,k0 参与 r1r0 的生成。则产生下列式子。

                          r2=k3+k2+k1;r1=k3+k2+k0; r0=k3+k1+k0.其中+代表异或

接收端检验码字。只需要 使用以下关系式对这三个偶校验关系进行验证:
s2=r2+k3+k2+k1; s1=r1+k3+k2+k0; s0=r0+k3+k1+k0                               

其中s2s1s0称为校正因子。若没有错,三个校正因子都为0,若不全为0,则有错误发生,错误的位置在S=S2 S1 S0。

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值