循环冗余校验码的计算是计算机组成原理的一大考点,具体算法如下:
A、编码原理:
现假设有: 有效信息:M ;
除数G(生成多项式) 有: M/G=Q+R/G
此时,可选择R作为校验位,则MR即为校验码。
B、校验原理: (M-R)/G=Q+0/G
说明:以接收到的校验码除以约定的除数,若余数为0,则可认为接收到的数据是正确的。
例:有效信息1101,生成多项式样1011,
求循环校验码解:
有效信息1101(k=4),即M(x)=x3+x2+x0 生成多项式1011(r+1=4,即r=3),
即G(x)=x3+x1+x0 M(x)·x3=x6+x5+x3,即1101000(对1101左移三位)
M(x)·x3/G(x)=1101000/1011=1111+001/1011 即1010的CRC是:1101001
如下图进行计算:
循环校验码的来源余数与出错序号间处理存在对应模式,
该模式只与只与码制和生成多项式有关,与具体的码字无关。
生成多项式满足的条件:任一位发生错误都应使余数不为0;不同的位发生的错误余数应不同。