题目
1.要发送的数据为101001,采用CRC的生成多项式是P(x)=x^3+x^2+1,试求添加在数据后面的余数。(本小题12分)
1.要发送的数据为101001,采用CRC的生成多项式是$P(x)=x^{3}+x^{2}+1$,试求添加在数据后面的余数。(本小题12分)
题目解答
答案
根据题目,生成多项式 $ P(x) = x^3 + x^2 + 1 $ 对应二进制[1] 1101。需在数据 101001 后添加 3 个 0,得被除数 101001000。将 101001000 除以 1101,进行模 2 除法:
1. 初始被除数:101001000。
2. 除数:1101。
3. 经过多次异或操作,最终余数为 011。
因此,应添加的余数为 011,实际发送数据为 101001011。
解析
本题考查循环冗余校验(CRC)的计算,解题思路是先根据生成多项式得到对应的二进制序列,然后在要发送的数据后面补零,补零的个数等于生成多项式的最高次幂,接着用补零后的数据除以生成多项式对应的二进制序列,进行模 2 除法运算,得到的余数即为要添加在数据后面的余数。
详细步骤
- 确定生成多项式对应的二进制序列:
已知生成多项式$P(x)=x^{3}+x^{2}+1$,根据多项式的系数,$x^3$的系数为 1,$x^2$的系数为 1,$x^1$的系数为 0,$x^0$的系数为 1,所以对应的二进制序列为 1101。 - 在要发送的数据后面补零:
生成多项式的最高次幂为 3,所以在要发送的数据 101001 后面添加 3 个 0,得到被除数 101001000。 - 进行模 2 除法运算:
模 2 除法的规则是不考虑借位和进位,只进行异或运算。具体计算过程如下:- 用 101001000 的前 4 位 1010 与除数 1101 进行异或运算:
$1010\oplus1101 = 0111$ - 将异或结果 0111 与下一位 0 组成 01110,再与除数 1101 进行异或运算:
$01110\oplus1101 = 1011$ - 将异或结果 1011 与下一位 0 组成 10110,再与除数 1101 进行异或运算:
$10110\oplus1101 = 1101$ - 将异或结果 1101 与下一位 0 组成 11010,再与除数 1101 进行异或运算:
$11010\oplus1101 = 0001$ - 将异或结果 0001 与下一位 0 组成 00010,再与除数 1101 进行异或运算:
$00010\oplus1101 = 1111$ - 将异或结果 1111 与下一位 0 组成 11110,再与除数 1101 进行异或运算:
$11110\oplus1101 = 0011$
- 用 101001000 的前 4 位 1010 与除数 1101 进行异或运算:
经过多次异或操作,最终余数为 011。