假设需要传输的数据为1000 0011 11,通信双方约定的生成多项式为G(x)=X6+X5+X+1。 (a)试求出校验码,并说明在网络中实际传输的数据(要有计算过程)。 (b)若数据部分最左边一位数在传输过程中发生变化,试描述接收方检错的过程(要有计算过程)。
时间: 2024-09-23 07:03:11 浏览: 123
(a) 要计算校验码,我们首先需要将原始数据转换成二进制串,然后按照生成多项式 G(x) 的规则进行计算。给定的数据是 `1000 0011 11`,即 `0b1000001111`。按照CRC (循环冗余校验) 算法,我们需要将数据位左移并添加额外的零位,直到数据长度能被生成多项式的阶数整除。G(x) = x^6 + x^5 + x + 1,所以总共有7位。因此,我们将数据向左移动6位:
```
0b1000001111 (原数据)
00010000001111 (左移并补0)
接下来,将生成多项式系数分别对应地乘到数据上:
0001 * 1 (x^6)
0010 * 0 (x^5)
0100 * 0 (x^4)
0001 * 1 (x^3)
0001 * 1 (x^2)
0001 * 0 (x^1)
0000 * 1 (常数项)
相加后得到校验码部分:
0011 1010
最终实际传输的数据将是:原始数据加上校验码,即 `0b100000111100111010`。
(b) 当数据部分的最左边一位发生改变时,比如变成 `0b1100001111`,接收到的数据将会是 `0b110000111100111010`。接收方会先提取数据部分和已知的校验码部分,然后再次对数据部分应用生成多项式 G(x) 进行计算。这里同样进行左移并假设补充了足够的0。
计算过程如下:
1. 提取数据部分 `0b1100001111` 和已知校验码 `0b00111010`。
2. 左移并补0后的数据:`0001100000111100111010`
3. 按照G(x)系数分配并计算:(省略具体步骤)
如果新的校验码与原始校验码不符(例如,新校验码不是 `0b00111010`),那么就发现了错误。接收方可以丢弃这个有误的部分并请求重新发送正确的数据。反之,如果新校验码匹配,则认为没有错误。
阅读全文