全站数据
8 4 2 0 5 8 1

这个CRC编码怎么算啊

每天消防一点点 | 简单学习,快乐成才!         
问题更新日期:2024-04-19 21:06:10

问题描述

这个CRC编码怎么算啊希望能解答下
精选答案
最佳答案

你知道有限域或者模2除法吗?不知道那下面就没法讲了。

CRC算法基于有限域GF(2),通过在p位数据后附加r位校验构成CRC校验码。r位校验码的生成是由校验数据模2除一个不可约多项式G(x)得到的,G(x)常用取值有420、84210、8541等(每一位数字代表该数字对应的项系数是1)。 我通过一个例子简单说明一下算法过程: 假设CRC校验为(7,4),即7位CRC码,其中4位为数据位,3位为校验位。用于生成的不可约多项式为G(x)=x³+x+1=1011=310。 现在需要传输的数据m(x)为1101=x³+x²+1。首先乘以x³,即在后面添3个零,变成1101000。接着计算有限域GF(2)=F2[X]/G(x)下x^6+x^5+x^3的同余式,即用G(x)=1011模2除1101000,得到结果为1111余001,这个余数001就是我们所求的校验码。将余数001添加到原多项式m(x)末尾,变成1101001,这个序列就是最终的CRC校验码。