| |
CRC码的生成多项式通常采用g(x)=(1+x)p(x)的形式,其中p(x)为本原多项式(primitive polynomial)。CRC的验错能力可以分析如下:
1) 由于采用(1+x),所以码字多项式作为g(x)的倍数必定有偶数项,因此,所有奇数个错误可以被检验出来。
2) 双比特错误可以表示为x^j+x^k=x^j(1+x^(k-j)),由于p(x)为本原多项式,可以整除p(x)的最小(k-j)的值为n,所以,所有双比特错误可以被检验出来。
3) 生成多项式具有g(x)=1+g_1*x+…+g_n-k-1*x^n-k-1 + x^n-k的形式,所以所有个数小于或等于(n-k)的错误都不可能整除g(x),即可被检验出来。
关于CRC码的另一个重要的特性是无法被校验错误(undetectable error)的概率,如果知道CRC校验之前的误比特率,就可以通过码重的分布来计算。通常CRC码的校验位个数远远低于信息比特个数,所以可以通过它的对称码的码重分布利用MacWilliams定理来计算无法被校验错误的概率。关于如何选用CRC及相关文献,可参见http://www.ietf.org/rfc/rfc3385.txt。