我觉得那个0x51是错的,原因如下
crc整个运算中用的是模2除法(实际上结果就等于按位的异或运算),也就是1-1=0,0-0=0,但是无论0-1或者1-0都得到1,并且不借位
实际运用时首先在待求数据(二进制)后面补充生成多项式最高次个0,再除以生成多项式
就本问题的过程如下,其中数据全部是二进制:
1、在待求CRC原始数据1后面补充8个0变成100000000后,再除以生成多项式,本问题为100110001,注意其中1的位置从右向左,即为生成多项式的次数
2、模2除法得到110001,不足原始生成多项式的8位,于是左边补0到8位得到00110001,将此数附在原始数据之后,用于检查是否能被生成多项式整除,当然,其中的除法使用的还是模2除法.显然1 00110001 除以生成多项式余数为0,于是正确