- 论坛徽章:
- 0
|
计算 X(k)+1(即X的k次幂加1)除以CRC-16/32后的余式,k从1到32768.
功能要求:要编写程序;要按余式的次数、为零与否分类统计。
另附上有关CRC016/32的定义:
将要发送的二进制数序列看成是只有0和1两个系数的一个多项式。n位的数据序列对应n-1次多项式。如:二进制数序列为"1010001",7位的数据序列对应6次多项式:
K(x)=x6+x4+1
选定除式G(x) , 被选作除式的多项式称为生成多项式,以下三个多项式已成为国际标准
CRC-12: G(x)=x12 +x11 +x3 + x2 + x + 1
CRC-16: G(x)=x16 +x15 + x2 + 1
CRC-CCITT: G(x)=x16 +x12 + x5 + 1
CRC-32 G(x)= x32+x26+x23+x22+x16+x12+x11+ x10
+x8+x7+x5+x4 + x2+x+1
将K(x)乘以 G(x)的最高幂次作为被除式, G(x)作多项式除式XrK(x)=G(x)*商+R(x)(相应系数相除) 。除法采用"加法不进位,减法不借位"的规则,即相当于异或操作
R(x)作为冗余码,加在原传送数据后面:
T(x)= XrK(x) +R(x)= G(x) *商+R(x) + R(x)= G(x) *商,构成发送序列。
接收方收到后,将接收序列用同样的生成多项式去除
T(x)/G(x)。若余式为零,则表示无差错;否则,说明传输过程中出现了错误。
也就是,
要发送的二进制数序列为"1010001",7位的数据序列对应6次多项式:
K(x)=x6+x4+1
选定的生成多项式为:
G(x)=x4 +x2 +x+ 1
(最高次数为4,相当于10111)
被除多项式为:
K(x)x4= x10+x8+x4
(相当于10100010000) |
|