轻松理解CRC差错检测算法七 -注解

原文第9部分的补充

原因

不得不承认把这个系列的翻译继续下去是很有挑战的。最近加班多,工作之余的精力就比较少了。坚持下去的想法还是有的,但回顾渐忘的初心,做这件事情的意义是在于帮助那些想把CRC算法学明白,而英文又差那么一点的人们,帮助他们从最根本的原理上来理解这个算法系列。我在之前自己看的过程中就发现作者的思路时有跳跃性。我自己在看的时候思路经常出现断续,作者说的标题“轻松理解”其实是有点夸大了。不符合我的习惯,我的习惯是每一个演进,都有它的原理在里面,可以直接看到,不需要读者再去思考。所以有了写这篇注解动机。
为了保持译文的完整和原本的条理,不方便直接在原文中加入大量的注解,另外只有证明我自己确实是理解了这部分,才能说明我翻译的基础是牢固的。所以才有了这一篇,作为原文第9节的注解。这里我会把我理解这部分的思路一步步展现出来。

原文梳理

第9节作为第8节的进一步,远远没有第8节那么容易理解。第8节,在讲解基本的直接实现的算法,其原理也非常简单,与长除法对应,也就是用移位与异或来实现长除法。第9节中,在第8节直接实现的基础上,作者介绍了表驱动实现。他的思路是,介绍表驱动的2个基础理论

1. 由poly和信息的前8位,可以确定第8次迭代后,寄存器的最高位值是0或者1。
2. 一个特定数a多次在不同的偏移位置与同一数b相异或,得到的结果,与a经过相同的偏移的值相异或后,再与b相异或得到的结果相同。用公式表达就是:
[(a << 1) ^ b] ^ a ^ (a << 2) ^ (a << n) =

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值