一文了解什么是CRC循环冗余校验

本文介绍了CRC(循环冗余校验)的工作原理,包括CRC-8、CRC-16和CRC-32的算法。通过举例展示了如何计算CRC校验和,解释了多项式的作用,以及为什么多项式的最高位必须为1。同时,讨论了计算机系统中实现CRC的不同方法,包括寄存器计算方式,并提到了使用表格和在线计算器简化CRC计算的选项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前写过一篇文章《如何计算IP或ICMP协议首部里的checksum字段》,采用的方法是:感兴趣的可以点击下面的链接,所采用的方法是:反码求和法,核心思想是先求和,再取反,今天学习一种更复杂的算法CRC-8、CRC-16或CRC-32算法

我们知道,反码求和法用的是加法

而CRC算法,用的是“除法”,这里的“除法”指的不是我们平时生活中所说的十进制除法,而是二进制中的异或取余

我们以CRC8的算法为例

既然是“除法”,肯定要有除数和被除数

被除数指的是需要被CRC校验的数据,除数根据CRC算法的不同,除数也不同,在CRC校验中,把除数称之为生成多项式

比如

CRC-8的多项式公式为:x8 + x2 + x + 1,
表示:1 0000 0111
值为0x107

CRC-8/MAXIM的多项式公式为:x8 + x5 + x4 + 1
表示:1 0011 0001
值为0x131

CRC-16/CCITT的多项式公式为:x16 + x12 + x5 + 1
表示:1 00010000 00100001
值为0x11021

可以看出

  • x8表示bit8为1,x5表示bit5为1,1表示bit0为1,其他位则为0
  • CRC-8的多项式共9个bit,CRC-16的多项式共17个bit,多项式总比CRC校验值多一个bit位
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汽车通信技术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值