前言:循环冗余校验码(cyclie redundancy check)简称CRC(循环码),是一种能力相当强的检错、纠错码,并且实现编码和检码的电路比较简单,常用于串行传送(二进制位串沿一条信号线逐位传送)的辅助存储器与主机的数据通信和计算机网络中。
1.CRC介绍
1.1 CRC校验
CRC循环冗余校验利用生成多项式为 k 个数据位产生 r 个校验位,其编码长度为 k + r 。由此可知,循环冗余校验码由两部分组成:左边是信息码(数据),右边是校验码。若信息码占 k 位,则校验码占 n - k 位( r = n - k)。其中,n 为CRC码的字长,所以又称为 ( n , k )码。校验码是由信息码产生的,校验码位数越长,该代码的校验能力就越强。
1.2 校验原理
发送端的信息码除以生成多项式的余数作为校验码,跟在数据码后面形成CRC码,然后发送数据。接收端接收数据后,除以生成多项式(接收端和发送端的生成多项式约定为相同),若结果为0,表示正常收到数据;若结果不为0,则表示数据传输过程中出现了差错。