对循环冗余校验码(CRC)的一些体会

本文详细解释了CRC校验码的工作原理,通过简单的数学运算帮助理解数据传输中如何确保数据的准确性。文中还介绍了模2除法的具体操作,以及如何通过这种特殊的除法运算生成并验证CRC校验码。

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

数据传输过程中数据可能会出现突变,所以需要校验,CRC是其中的一种校验码。它的总体思路是:

x=数A     (要进行校验的数)

y=数B    (传输双方约定好的一个数)

z=x/y的商

c=x/y的余数

x-c总能够整除y,我们在传输的时候传的是x-c,而c就是crc的检验码,

因此对方进行校验时,接收到的x-c应该总是能整除y的,如果不能整除就证明数据有误。

上面的说明用十进制数的运算来看很容易就能明白,但实际上我们的数据是以二进制数的形式来传输的,如果看过CRC码的产生过程,你可能就会有些疑惑了,那个过程中,并没有任何减法运算啊!不是的,已经减了,不过是模2减法,它首先将要传输的数据左移了k位(k等于校验码的位数),设移动后的数为A,然后进行模2除得出余数,亦即是校验码,到了最后,你可能以为是把校验码加到A上,其实不是,其实是A和校验码进行了模2减!数学真的是一样很奇妙的东西,并且凌驾于一切之上。模2加和模2减是等效的!

就这样,当对方收到数据时再进行一次除数相同的模2除,就知道有没有出错了。顺带一提,我看了几篇网上的文章介绍模2除的时候都说当余数首位是0时则商0,其实正确的说法应该是除去最高位后的余数部分的首位,而不是余数首位,就好像104/100的余数是多少?是4?不对,是004。。。。

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值