题目描述
CRC的基本思想:
将二进制位串看成系数为0或1的多项式。使用CRC编码时,发送方和接收方必须事先商定一个生成多项式G(x),生成多项式的最高位和最低位的系数必须是1。
假设一个帧有m位,对应的多项式为M(x),为了计算它的校验和,该帧必须比生成多项式长。
CRC的原理:
在帧的尾部追加一个校验和,使得追加之后的帧所对应的多项式能够被G(x)整除。
当接收方收到了带校验和的帧后,用G(x)去除它,如果有余数,则表示传输过程中有错误。
计算CRC校验和的算法:
① 假设G(x)的阶为r。在帧的尾部加上r个0,构成的帧包含m+r位,对应的多项式为x^r*M(x);
② 利用模2做除法。用G(x)去除x^r*M(x),得x^r*M(x) /G(x) = Q(x) + R(x)/G(x) ,其中Q(x)为商,R(x)为余数。
③ 利用模2做减法。用x^r*M(x)减去余数R(x)