循环冗余校验码(CRC),简称循环码,是一种常用的、具有检错、纠错能力的校验码,在早期的通信中运用广泛。循环冗余校验码常用于外存储器和计算机同步通信的数据校验。奇偶校验码和海明校验码都是采用奇偶检测为手段检错和纠错的(奇偶校验码不具有纠错能力),而循环冗余校验则是通过某种数学运算来建立数据位和校验位的约定关系的。
假设原始信息串为10110,CRC的生成多样式为G(x) = x4 + x + 1 求CRC校验码
- 在原始信息串后面加0,添加的数量就是多样式x的最高阶,这里是4,则信息串变为101100000;
- 由多项式得到除数,多项式x4 + x + 1把1看做x0,位有数的为1没有的就是0,X0,X1,X4有数,X2,X3没有,得出除数为10011
- 生成CRC校验码,将除数与被除数进行模2除法运算(不进位也不借位的除法运算)得到余数1111
注意:如果最后得到的余数为11,是2位数,则需要用0的补齐X的最高阶位数,这里X最高阶为4,则需要在高位补2个0变为0011.