循环冗余校验码CRC原理和实例

来源:互联网 发布:cactiez mysql 密码 编辑:程序博客网 时间:2024/04/29 21:18

今天同事问了一个CRC(循环冗余校验码)的问题,好奇心之下学习了一下。

首先说它的原理,百度百科上也有,我就简单说一下,它其实就是采用多项式编码的方法,对于要发送的信息码R,发送方和接收方约定好多项式g(x),所以发送的CRC码的组成就是信息码R加上多项式g(x)模2除信息码的余数的组合。

举个例子:

假如信息码为1110011,多项式g(x)=x^4+x^2+1,那么CRC的求法如下:

g(x)=x^4+x^2+1对应的二进制编码为10101,就是有幂次的项对应1,没有的就为0,所以也得出校验码的个数为4,即g(x)的最高幂次

信息码R为1110011,所以要发送的CRC为1110011,0000,后4位是为校验码预留的

校验码的求法:11100110000/10101做模2除,除法就是类似我们数学上除法的“厂”方法,把被除数写到除数下面去,做异或运算,最后取余数,所以

11100110000/10101的余数为1011

所以要发送的CRC码为:11100111011

0 0