海明校验码与CRC循环冗余校验码
1、海明校验码
常用于发现纠正1位数据出错。其编码规则是在n位被校验数据位间,插入k个校验位,其校验位之个数满足关系
2k-1>=n+k;校验位在海明码中的位置是固定的,即海明码的1、2、4、8...位;一个校验位可校验多个数据位,每个校验位的取值等于其被校验数据位之和。其中被校数据位海明位号等于各校验位海明位号之和。
当某个数据位出错,则引起有关的校验位改变,当所有海明位均正确时,则有关的校验值为全0。
当某个校验位出错时,则有关的校验值只有一位不为0。且其编码为该出错校验位之海明位号。当某个数据位出错时,则有关的校验值有2位或3位不为0,且其编码为该出错数据位之海明位号。
纠正其错时,只要将出错位变反即可,因此可以自动纠正1位错。发现多位数据出错或纠正多位出错的情况要复杂得多。
2、CRC循环冗余校验码
用于发现和纠正信息传送过程中连续出现的多位错误。CRC码是指在k位被校验数据之后拼接r位校验码,得到k+r位编码。需设计一种算法,使得发送方根据k位数据算出r位校验位之值,一起传给对方;接收方根据同一算法对k+r位数据进行校验,即可判断传送是否出错。关键是找出这种算法。