CRC编码也称多项式编码,因为该编码能够将要发送的比特串看作为系数是0和1的一个多项式,对比特串的操作被解释为多项式算术。

CRC的基本思路是对于一个d比特的数据(比特串D),在其后面添加一个r比特的检验位(比特串R),使得我们确定的一个r+1位的生成多项式(比特串G)满足以下条件:

$$
D·2^r + R = nG
$$

其中的加法是二进制加法,即不进行进位操作。在这种情况下,加法等同于异或XOR操作。

对等式两边同时异或R,得到:

$$
D·2^r = nG + R
$$

这样,想要找到正确的R,就可以通过对$D·2^r$ mod G得到。

之后在收到数据后,就可以将G除以数据,若余数为0,则可以判断数据正确,否则数据有误。