题目给出两个已知条件

  1. 原始报文 or 信息序列(一串二进制数)

例:110101

  1. 商定多项式 or 多项式的代数关系 or 该多项式对应的二进制数

例:G(x)=x^3+x+1 or 1011

(一般求这两种)

  1. 最终发送的报文 or 编码后的报文 or 循环冗余码(都是同一个东西)
  2. 附加冗余码

例:

需发送数据1101011011,采用CRC校验,生成多项式G(x)=x^4+x+1,求最终发送的数据。

第一步:在信息序列后加0

​ 0的个数为:方法一:多项式最高次项的次数…4

​ 方法二:多项式二进制数的位数-1…5-1=4

结果:11010110110000

第二步:用加完0后的数 去 除 多项式对应的二进制数(模二除法:【异或】“同0异1”)

在这里插入图片描述

第三步:将模二运算的余数(这个余数就是“附加冗余码”)添加在原始报文后,成为循环冗余码。

最终结果: 11010110111110

理论补充:

将最终数据发送给接收端,再进行一系列运算:

若余数为0–>说明无差错,若余数不为0–>直接丢弃

解惑

1. 关于已知的多项式如何转换为二进制数

​ 首先确定最高次项次数…4

​ 然后从这个数字降序写到0:4 3 2 1 0

​ 对比多项式:G(x)= x^4 + x + 1…(主要看指数)

​ 我们观察到有4 1 0(多项式中的数字1是x的0次方,所以也算进去)

​ 最后在出现了的数字下面写1,没有出现的下面写0:

​ 4 3 2 1 0

​ 1 0 0 1 1

最后得到的就是我们第二步要求出来的二进制数:10011

2. 关于余数的位数(官方称作“冗余位”)

冗余位就是我们第一步要求的0的个数,两种方法(前面已介绍)

3. 所以说,还能求别的未知信息

  1. 冗余位
  2. 商定多项式转成二进制数

4. 关于模二除法

只要满足冗余位的个数就可以进行一次模二运算,直到上面掉落的数字无法满足位数为止。

5. 关于余数前补0

有时候模二除法最后算出来的数字比冗余位少,这个时候就要在附加冗余码前补0来满足位数,从而才能进行下一步。

请注意

我写的是1 2 3个步骤,是根据我自己的理解写的应该基本上都能看懂的计算步骤,不是规范的可以写到试卷上去的格式,考试拿分还是看你们老师怎么要求的。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐