概述
举例子 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 算法的核心就是 模二运算,FCS 帧校验序列 的核心算法是CRC,模二是祖宗所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复