【备考记录】三种校验码
计算机系统运行时,各个部件之间要进行数据交换换,为了确保数据在传送过程中正确无误,一是提高硬件电路的可靠性;二是提高代码的校验能力,包括查错和纠错。
常用的三种校验码:奇偶校验码(Parity Codes)、海明码(HammingCode)和循环冗余校验(Cyclic RedundancyCheck,CRC)码。
奇偶校验码
- 基本原理:奇偶校验码是一种简单的错误检测码,通过在数据后面增加一个校验位,使得整个数据中1的个数为奇数或偶数。
- 奇校验码:整个校验码中1的个数为奇数。
- 偶校验码:整个校验码中1的个数为偶数。
- 特点:只能检测出奇数位的错误,无法检测出偶数位的错误,且无法确定错误的具体位置。
海明码
- 基本原理:海明码是一种可以纠正一位差错的编码,通过在数据中插入多个校验位,并将每个数据位分配到多个奇偶校验组中,从而实现错误的检测和纠正。
- 编码规则:
- 根据信息位数 n n n,确定校验位数 k k k,满足关系式 2 k − 1 ≥ k + n 2^k -1 \geq k + n 2k−1≥k+n
- 将校验位放置在海明码的2的幂次位置上,其余位置放置信息位。
- 每个校验位负责不同的数据位组合的奇偶校验。
- 特点:可以检测出双比特错误,并纠正单比特错误。
循环冗余校验码(CRC)
- 基本原理:循环冗余校验码是一种基于多项式除法的检错码,将数据视为一个多项式,用该多项式去除以一个预先确定的生成多项式,得到的余数作为校验码。
- 编码规则:
- 将要传送的信息 M ( X ) M(X) M(X) 表示为一个多项式。
- 用 M ( X ) M(X) M(X) 乘以 x r x^r xr( r r r为校验位数),得到一个多项式。
- 将该多项式除以生成多项式 G ( X ) G(X) G(X),得到余式 R ( X ) R(X) R(X)。
- 将余式 R ( X ) R(X) R(X)作为校验码附加在原信息后面,形成最终的传输数据。
- 特点:具有较强的检错能力,能够检测出所有奇数位错、双比特错以及小于等于校验位长度的突发错。
总结
- 奇偶校验码:简单易实现,但检错能力有限,只能检测出奇数位错误。
- 海明码:不仅能检错,还能纠正单比特错误,但编码复杂度较高。
- 循环冗余校验码:检错能力强,适用于数据传输等领域,但需要进行多项式运算。