1.校验码概述
校验码就是在原有信息上增加冗余校验扩大码距,从而增加差错纠错的能力
码距:指两个等长字符串之间对应位置上不同字符的个数。换句话说,码距是用来衡量两个字符串之间的差异程度的指标。
2.奇偶校验码
通过在编码中增加一位校验位来使编码中 1 的个数为奇数(奇校验)或偶数(偶校验),从而使码距变为 2,奇偶校验可以检测编码中奇数位出错的编码;
- 奇偶校验码只能检查奇数位错,不能纠错
3.CRC循环冗余校验码*
广泛应用于数据通信领域和磁介质存储系统中,利用生成多项式为 k 个数据位产生 r 个校验位来进行编码,编码长度为 k+r,校验码位数越多CRC的校验能力就越强,用模2运算来求CRC编码;
- CRC循环冗余校验码能检多位错,不能纠错
- 模 2 运算,也称为取余运算,是指将一个整数除以 2,然后返回余数。如果余数为 0,则被除数是偶数;如果余数为 1,则被除数是奇数。
4.海明校验码
在有效信息位中加入几个校验位形成海明码,使码距比较均匀的拉大,并把海明码的每个二进制位分配到几个奇偶校验组中,当某一位出错后就会引起有关的几个校验位的值发生变化;
设数据位为 n 位,校验位为 k 位,则 n 与 k 必须满足 -1 >= n+k,而且校验位
在
位置上。
- 海明码既能检错,也能纠错
- 采用奇校验则将各校验位的偶校验值取反即可
-
-
在奇校验中,校验位被设置为使得数据位和校验位中的1的总数为奇数个
-
在偶校验中,校验位被设置为使得数据位和校验位中的1的总数为偶数个
4.1 海明码检错方式
- 若采用偶校验,则
全为 0 时表示收到的数据无错(奇校验应全为1),若不符合则出错,
的十进制值表示发生错误的位置,(如
= 1010B = 10 则表明
出错,取反即可纠错)
4.2 例题
【例题1.6】设数据为 10011100,采用 4 个校验位求其偶校验方式的海明码