一、目的
阐述CRC16的原理,并以C语言代码实现。
二、 校验码的作用
校验码用于校验数据的有效性/正确性。
校验码用原数据生成,并伴随原数据一起发送/保存,使用者拿到发送/保存的数据序列后,取出原数据部分,根据校验码生成规则生成校验码,与拿到的校验码进行比较即可判断数据是否有效/正确。
三、 CRC校验码生成过程
任意一个数据序列都可以用二进制表示,如整数123可以用二进制表示为1111011B。对二进制数模2除以一个N位的二进制数,余数应该是N-1位。而模2除相当于找到为1的最高位,作异或运算。
举个例子来看取余的过程:
123对25取余,亦即1111011B对11001取余,可以先将1111011B右移(5-1)位,用来存储余数,得