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。
我将上面过程写了一遍供参考。