2.6 数据校验码 (奇偶校验码、海明码)

2.6.1 码距和数据校验码

        两个码组对应位上数字的不同位(0或1)的个数称为码组的距离,简称码距

 比如这里,0000和0001,只有最后一个数字0和1不一致,有一组不同,码距就是1。

 

        表中,正常情况下的码距是1,采用偶校验码的方式下码距为2。码距增大后,某1位出错时,原编码与错误编码之间的码距为1,而正确编码之间的码距为2,结果将落入错误编码中,从而能发现错误。

        校验码的原理就是尽量增大码距以提高检、纠错的能力。码距越大,对数据的浪费也大! 4位奇偶校验码仅能表示8个数据。

        数据校验码就是在数据的特定位置插入1位或多位的二进制数据,起到发现错误和纠正错误作用的编码。常见的数据校验码有: 奇偶校验码、海明码、CRC冗余校验码。

2.6.2 奇偶校验码

        奇偶校验码是最简单的校验方式,在信息编码的时候,将字的最高位作为校验位。奇偶校验有两种校验方式:奇校验和偶校验。

奇校验:在最高位添加0或1,使字编码中的“1”的个数为奇数。

偶校验:在最高位添加0或1,使字编码中的“1”的个数为偶数。

例题:

已知某机器对要传输的数据进行校验位添加,采用的方式为奇校验,
已知给定的七位二进制数据位1011010B,则对应的校验位为(B)
A.0    B.1

2.6.3 海明校验码

校验位个数的确定:

        设有K位数据,r位校验位,能发现并纠正一位错:

2^r ≥k+r+1

用海明码对长度为 8位的 数据进行检 /纠错时 ,若能纠正一位错。
则校 验位数至少为
A. 2      B. 3      C. 4      D. 5

选C。根据公式2^4>8+4+1,2^3≥4+3+1

根据公式有以下总结

 海明码的编码规律:

        假设有8位数据位,由2^r ≥k+r+1可知需要4位校验位。

         校验位有4个,数据位8个,一共12位海明码,按照H1、H2、H3……H12的顺序。对于数据排列,其中C1,C2,C3,C4代表校验位,D1,D2……代表数据位;校验位应在2^n的位置,如1,2,4,8,16等,先放入对应的H的位置(图中红色的C);剩下的位置按顺序放入数据。

海明码的分组:

 分析规律可知,给数据分解成一个或多个C值相加,有对应的C值的为一组。

海明码的计算:

        假如有给定的数据D4D3D2D1=1101,计算其海明码。根据公式分析,需要3位校验位,排列如下。

 求校验码就是将按上面的分组中含有对应的1,2,4,8等数据位进行异或操作后就是结果。

 对于异或,我这里总结了个技巧:奇数个相同异或为1,如5个1,7个0异或的结果都是1;偶数个相同异或为0,如4个1,10个0异或的结果都为0。

我将上面过程写了一遍供参考。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值