在数据传输过程中,若接收方收到发送方送来的信息为10110011010,生成多项式为G(x)=x4+x3+1,接收方收到的数据是否是正确的?(请写出判断依据及推演过程)
时间: 2024-02-29 17:53:42 浏览: 34
该问题涉及到循环冗余校验码(CRC)的计算和校验过程。在计算CRC时,发送方首先确定一个生成多项式G(x),然后将待发送的数据D(x)乘以2的n次幂,其中n为G(x)的次数,得到被除数M(x),然后将M(x)除以G(x),得到商Q(x)和余数R(x),将Q(x)和D(x)合并,得到发送的数据S(x),将R(x)作为CRC码加在S(x)的末尾。接收方在接收数据时,将接收到的数据记为R(x),然后将R(x)除以G(x),若余数为0,则认为数据正确,否则认为数据出错。
根据题目中给出的数据和生成多项式,可以得到以下计算过程:
被除数M(x) = 101100110100000
生成多项式G(x) = x^4 + x^3 + 1
除数D(x) = 10011
首先将M(x)的前五位与D(x)进行异或运算,得到余数R1(x) = 11000,然后将R1(x)左移一位,再将M(x)的第六位与R1(x)的最高位进行异或运算,得到余数R2(x) = 10010。以此类推,最终得到余数R(x) = 0100,即余数不为0,所以接收到的数据是错误的。
相关问题
在采用crc校验时,若生成多项式g(x)=x4+x3+x+1
采用 CRC 校验时,生成多项式 g(x) 用于计算校验码。对于 g(x)=x4+x3+x+1,它的二进制表示为 10011。
具体的校验过程如下:
1. 假设待校验的数据为 D,按位展开成二进制数 d(x)。
2. 将 d(x) 左移 g(x) 的次数(即 g(x) 的次数减一)得到一个新的数 R(x),R(x) 的次数为 g(x) 的次数。
3. 用 R(x) 除以 g(x),得到商数 Q(x) 和余数 B(x)。
4. 将 B(x) 作为校验码,附加在原数据 D 的末尾。
5. 发送的数据为 D 和 B(x) 的组合。
6. 接收方收到数据后,重复以上过程,若余数为 0,则认为数据没有错误。
注意:在以上过程中,所有的运算都是在有限域 GF(2) 上进行的,也就是说,只有 0 和 1 两个数。
在采用crc校验时,若生成多项式g(x)=x4+x3+x+1,进行模2除数
在进行模2除数运算之前,需要先将被除数和除数都转换为二进制形式。假设被除数为D(x)=1011001,除数为G(x)=x4+x3+x+1,则需要在D(x)高位补0,使得D(x)的总位数等于G(x)的次数加1,即:
```
D(x) = 01011001
G(x) = 10011
```
接下来,从D(x)的最高位开始,依次取出和G(x)同样位数的比特进行异或运算。如果结果为1,则将G(x)对应的比特全部异或到D(x)上;如果结果为0,则直接将G(x)对应的比特全部异或到D(x)上。然后将D(x)向左移动一位,继续进行上述操作,直到D(x)的位数小于等于G(x)的次数为止。
最终,余数就是最后一次模2除数运算的结果,这里余数为R(x)=111。将R(x)附加在原来的被除数后面,得到校验码为:
```
01011001111
```
其中,最后四位1111就是余数R(x)。发送方将原来的数据和校验码一起发送给接收方,接收方在收到数据后,也需要进行一次模2除数运算,如果余数为0,则表示数据没有出错;否则表示数据出现了错误。