目录
题目给出两个已知条件 :
- 原始报文 or 信息序列(一串二进制数)
例:110101
- 商定多项式 or 多项式的代数关系 or 该多项式对应的二进制数
例:G(x)=x^3+x+1 or 1011
求 (一般求这两种):
- 最终发送的报文 or 编码后的报文 or 循环冗余码(都是同一个东西)
- 附加冗余码
例:
需发送数据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. 所以说,还能求别的未知信息
- 冗余位
- 商定多项式转成二进制数
4. 关于模二除法
只要满足冗余位的个数就可以进行一次模二运算,直到上面掉落的数字无法满足位数为止。
5. 关于余数前补0
有时候模二除法最后算出来的数字比冗余位少,这个时候就要在附加冗余码前补0来满足位数,从而才能进行下一步。
请注意
我写的是1 2 3个步骤,是根据我自己的理解写的应该基本上都能看懂的计算步骤,不是规范的可以写到试卷上去的格式,考试拿分还是看你们老师怎么要求的。