举例子 CRC16 CCITT
被除数是 0x11021 最高位不参与运算 被除数就是 0x1021 (16bit,0x11021 已经是17bit) 不懂原理之前
懂原理之后 只是计算的时候 异或运算将 最高位 消灭掉了 就成了 0x1021
模二除法运规则 (来源网络整理)
当余数位数与除数位数相同时,才进行异或运算,余数首位是1,商就是1,余数首位是0,商就是0。当已经除了几位后,余数位数小于除数,商0,余数往右补一位,位数仍比除数少,则继续商0,当余数位数和除数位数一样时,商1,进行异或运算,得新的余数,以此至被除数最后一位。
crc 检验码位 计算后的余数
除数是0 << 16
商为 0
被除数是 0x11021
余数是 0
除数是1 << 16
商为 1
被除数是0x11021
余数是0x1021
除数是 2 << 16
被除数是 0x11021
余数是0x2042
实际发送的数据=( 原数据<<(CRC的冗余计算的宽度)) | (CRC)
现在百度查的资料一出来文字描述的方法, 和实际的用法有出入
文字描述的过程是人的计算过程
计算机的计算过程 和人的计算方式不一样, 请注意
crc table 的生成代码 ccitt 标准 生成方法
libcrc github 中找到的


CRC thread safe xmodem 计算方法 (来源网络整理)

最后
以上就是善良台灯最近收集整理的关于CRC 算法的核心就是 模二运算,FCS 帧校验序列 的核心算法是CRC,模二是祖宗的全部内容,更多相关CRC内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复