题目
12.简答题已知发送数据为1011001,生成多项式G(x)=x^4+x^3+1(对应的二进制[1]为11001),请计算CRC校验码,并写出最终的发送帧(数据+校验码)。
12.简答题
已知发送数据为1011001,生成多项式$G(x)=x^{4}+x^{3}+1$(对应的二进制[1]为11001),请计算CRC校验码,并写出最终的发送帧(数据+校验码)。
题目解答
答案
根据题目,$ D(x) = 1011001 $,$ G(x) = 11001 $。将 $ D(x) $ 左移4位得10110010000。
进行二进制除法:
```
10110010000 ÷ 11001 = 11111,余数为0101。
```
最终发送帧为:
\[
D(x) \times x^4 + R(x) = 10110010000 + 0101 = 10110010101
\]
答案:10110010101。
解析
本题考查循环冗余校验(CRC)的计算,解题思路如下:
- 首先明确生成多项式 $G(x)$ 的最高次幂 $r$,在本题中 $G(x)=x^{4}+x^{3}+1$,最高次幂 $r = 4$。
- 将发送数据 $D(x)$ 左移 $r$ 位,相当于在 $D(x)$ 后面补 $r$ 个 0。本题中 $D(x)=1011001$,左移 4 位后得到 $D(x)\times x^{4}=10110010000$。
- 用左移后的 $D(x)\times x^{4}$ 除以生成多项式对应的二进制序列 $G(x)$,进行二进制除法运算。
- 二进制除法规则:从被除数的高位开始,与除数进行比较。若被除数的当前位及以下的位数大于等于除数,则商 1,并将该部分减去除数;若小于除数,则商 0。
- 对于 $10110010000\div11001$:
- 首先,$10110$ 大于 $11001$ 不成立,商 0,然后看 $101100$,$101100\div11001$ 商 1,$101100 - 11001\times1=101100 - 11001 = 101100-100000 - 1001=1101$。
- 把下一位 1 移下来得到 $11011$,$11011\div11001$ 商 1,$11011 - 11001\times1=11011 - 11001 = 10$。
- 把下一位 0 移下来得到 $100$,$100\lt11001$ 商 0。
- 把下一位 0 移下来得到 $1000$,$1000\lt11001$ 商 0。
- 把下一位 0 移下来得到 $10000$,$10000\lt11001$ 商 0。
- 把下一位 0 移下来得到 $100000$,$100000\div11001$ 商 1,$100000 - 11001\times1=100000 - 100000 - 1001=- 1001$(这里是二进制运算,实际是 $100000-11001 = 100000-(100000 + 1001)=100000+100000+1001$(二进制补码运算),结果为 $0101$)。
- 得到商为 $11111$,余数 $R(x)=0101$,这个余数就是 CRC 校验码。
- 最终的发送帧为 $D(x)\times x^{4}+R(x)$,即把左移后的 $D(x)$ 和校验码 $R(x)$ 相加。本题中 $D(x)\times x^{4}=10110010000$,$R(x)=0101$,所以最终发送帧为 $10110010000 + 0101=10110010101$。