算法
Beatfan_N
这个作者很懒,什么都没留下…
展开
-
【CRC】CRC推导(八)CRC64的各种实现
CRC64 算法实现与表格推导原创 2020-04-30 08:16:53 · 4120 阅读 · 0 评论 -
【CRC】CRC推导(七)CRC32的各种实现
CRC32算法实现与表格推导原创 2020-04-30 08:14:46 · 5135 阅读 · 0 评论 -
【CRC】CRC推导(六)CRC16的各种实现
CRC16 算法实现与表格推导原创 2020-04-30 08:09:00 · 4657 阅读 · 0 评论 -
【CRC】CRC推导(五)CRC8的各种实现
CRC8 算法实现与表格推导原创 2020-04-30 08:08:10 · 3170 阅读 · 0 评论 -
【CRC】CRC推导(四)算法优化
前面讲到模二除法,本节将模二除法的优化。优化一、首先我们以多项式为0x11021(实际上就是CRC16 CCITT)为例,根据模二除法规则,算法如下:模二算法每一次计算的余数都是比多项式少一个bit,最后的余数也是如此,因为最高位的1始终会被消除,因此,我们在计算时可以不用考虑高位。假设多项式还是0x11021,我们每次只需要处理0x1021,即16位寄存器的数据即可。...原创 2020-04-30 08:06:40 · 1346 阅读 · 0 评论 -
【CRC】CRC推导(三)字节查表与半字节查表
上节我们讲到模二除法,模二除法的操作是按位进行,每次移动一位,然后计算,算法要套2个循环,效率较低。由于异或运算有交换律和结合律。因此,我们再次看一下范例:传送数据为0xCF16(1100111100010110b),多项式为0x11021(10001000000100001b)为例,结果如下: 我们省略一些过程,将4次计算合并成一次。我们先计算蓝色部分,再将蓝...原创 2020-04-30 08:05:17 · 1905 阅读 · 0 评论 -
【CRC】CRC推导(二)模二除法
在讲模二除法之前,我们先看看按位异或运算。如下即二进制1101b异或1010b的结果为0111b。按位异或是一种二进制运算,只影响当前位,因此我们可以得出两个简单的定律:交换律和结合律。A⊕B⊕C=A⊕(B⊕C)例如:1⊕0⊕1与1⊕1⊕0及0⊕1⊕1的结果是一样的。以上定律对于后面查表推导有极大的帮助。模二除法并不是一个传统意义上的除法,它是一种二进制除法,二进制除法操作...原创 2020-04-30 08:03:28 · 4587 阅读 · 0 评论 -
【CRC】CRC推导(一)CRC简介
CRC是数据传输过程中的常见的一种校验方式,由于其算法简单,而且出错率极低,因而广为使用。工作中使用CRC算法非常多,不过一般由于项目紧急,仅仅只会应用,具体为什么这么算不求甚解。本文将推导CRC算法,从最初的模二除法到CRC优化、查表。在推导CRC算法之前,看了很多其它人的讲解,虽然有所启发,但是大部分都没有讲到最关键的两个地方: 模二除法新的数据是移位到CRC寄存器的最低位,为什么现...原创 2020-04-30 08:02:28 · 1812 阅读 · 1 评论