一、CRCCRCCRCCRC介绍
CRC循环冗余码校验英文名称为“Cyclical Redundancy Check”,简称 CRC。CRC 校验实用程序
库在数据存储和数据通讯领域,为了保证数据的正确,就不得不采用检错的手段。在诸多检错手段中,CRC
是最著名的一种。CRC 的全称是循环冗余校验,其特点是:检错能力极强,开销小,易于用编码器及检测
电路实现。从其检错能力来看,它所不能发现的错误的几率仅为 0.0047%以下。从性能上和开销上考虑,
均远远优于奇偶校验及算术和校验等方式。因而,在数据存储和数据通讯领域,CRC无处不在:著名的通
讯协议 X.25 的 FCS(帧检错序列)采用的是 CRC-CCITT,WinRAR、NERO、ARJ、LHA等压缩工具软件
采用的是 CRC32,磁盘驱动器的读写采用了 CRC16,通用的图像存储格式 GIF、TIFF等也都用 CRC作为
检错手段。
它是利用除法及余数的原理来作错误侦测(Error Detecting)的。实际应用时,发送装置计算出
CRC 值并随数据一同发送给接收装置,接收装置对收到的数据重新计算 CRC并与收到的 CRC相比较,若
两个 CRC 值不同,则说明数据通讯出现错误。
根据应用环境与习惯的不同,CRC又可分为以下几种标准:
� CRC12=X12+X^11+X3+X2+1
� CRC16=X16+X15+X2+1(IBM公司)
� CRC16=X16+X12+X5+1(国际电报电话咨询委员会 CCITT)
� CRC32=X32+X26+X23+X22+X16+X11+X10+X8+X7+X5+X4+X2+X+1
CRC-12码通常用来传送 6-bit字符串。
CRC16及 CRC-CCITT码则用是来传送 8-bit字符,其中 CRC16为美国采用,而 CRC-CCITT为欧
洲国家所采用。
CRC-32码大都被采用在一种称为 Point-to-Point的同步传输中。
采用 CRC 进行数据校验还有以下优点:
(1)可检测出所有奇数个错误
(2)可检测出所有双比特的错误
(3)可检测出所有小于等于校验位长度的连续错误
(4)以相当大的概率检测出大于校验位长度的连续错误
二、 CRC16CRC16CRC16CRC16生成过程
下面以最常用的 CRC16 为例来说明其生成过程。