CRC32 算法学习笔记以及如何用jav a 实现 一:说明 二:基本概念及相关介绍 2.1 什么是CRC 在远距离数据通信中,为确保高效而无差错地传送数据,必须对数据进行校验即差错控制
循环冗余校验CRC(Cyclic Redundancy Check/Code)是对一个传送数据块进行校验,是一种高效的差错控制方法
CRC 校验采用多项式编码方法
多项式乘除法运算过程与普通代数多项式的乘除法相同
多项式的加减法运算以2 为模,加减时不进,错位,如同逻辑异或运算
2.2 CRC 的运算规则 CRC 加法运算规则: 0+0=0 0+1=1 1+0=1 1+1=0 (注意:没有进位) CRC 减法运算规则: 0-0=0 0-1=1 1-0=1 1-1=0 CRC 乘法运算规则: 0*0=0 0*1=0 1*0=0 1*1=1 一、循环冗余校验码(CRC) CRC 校验采用多项式编码方法
被处理的数据块可以看作是一个 n阶的二进制多项式,由
如一个 8 位二进制数 10110101 可以表示为:
多项式乘除法运算过程与普通代数多项式的乘除法相同
多项式的加减法运算以 2 为模,加减时不进,错位,和逻辑异或运算一致
采用 CRC 校验时,发送方和接收方用同一个生成多项式 g(x ),并且 g(x )的首位和最后一位的系数必须为 1
CRC 的处理方法是:发送方以 g(x )去除 t(x ),得到余数作为 CRC 校验码
校验时,以计算的校正结果是否为 0 为据,判断数据帧是否出错
CRC 校验可以 100%地检测出所有奇数个随机错误和长度小于等于k(k 为 g(x )的阶数)的突发错误
所以 CRC 的生成多项式的阶数越高,那么误判的概率就越小
CCITT 建议:2048 kbit/s 的 PCM 基群设备采用 CRC-4 方案,使用的 CRC 校验码生成多项式 g(x