设要采用CRC码传送数据信息x=1001,当生产多项式为G(x)=1101时,请写出它的循环冗余校验码。若接收到的数据信息为x‘=1101,说明如何定位错误并纠正错误
时间: 2024-04-03 14:32:06 浏览: 267
根据CRC编码的原理,将数据信息x左移G(x)的位数,并用G(x)对其进行除法运算,得到的余数就是循环冗余校验码。
将1001左移3位得到1001000,然后用1101进行除法运算,得到的余数为010。因此,循环冗余校验码为010。
若接收到的数据信息为x‘=1101,则先将x‘左移3位得到1101000,然后用G(x)进行除法运算,得到的余数为011。由于接收到的余数与发送的校验码不同,说明出现了错误。
可以通过反转011得到错误位置为第二位,然后将错误位置上的位取反即可纠正错误,即将1101变为1111,得到原始数据信息为1001。
相关问题
设要采用crc码传送数据信息x=1001,当生成多项式为G(x)=1101时,请写出他的循环冗余校验码。若接受方收到的数据信息为
要计算循环冗余校验码,需要进行以下步骤:
1. 在数据信息后面添加G(x)中比特数-1个0,得到扩展后的数据信息D(x) = 1001000。
2. 用D(x)除以G(x),得到商Q(x)和余数R(x)。其中商Q(x)为校验码,余数R(x)为校验结果。
3. 把校验码Q(x)添加到数据信息后面,发送给接受方。
在这个例子中,计算过程如下:
```
1 0 0 1 0 0 0 <- 数据信息 x = 1001
1 1 0 1 <- 生成多项式 G(x) = 1101
-----------------
1 0 1 1 1 0 0 0 <- 扩展后的数据信息 D(x)
1 1 0 1 <- 商 Q(x) = 1101
-----------------
1 0 1 1 <- 余数 R(x) = 1011
```
因此,循环冗余校验码为Q(x) = 1101,校验结果为R(x) = 1011。
如果接收方收到的数据信息为1101100,那么它会按照相同的方式计算余数R(x):
```
1 1 0 1 1 0 0 <- 接收到的数据信息
1 1 0 1 <- 生成多项式 G(x) = 1101
-----------------
1 0 1 1 1 0 0 <- 扩展后的数据信息 D(x)
1 1 0 1 <- 商 Q(x) = 1101
-----------------
1 0 0 0 <- 余数 R(x) = 1000
```
由于余数不为0,说明数据信息出现了错误。接收方会向发送方请求重新发送数据信息。
设要采用CRC编码传送的数据信息x=1001,当生成多项式为G(x)=1101时 ,请写出它的循环校验码。若接收方收到的数据信息x'=1101,请详细说明如何定位错误并纠正错误。
使用CRC编码生成循环校验码的步骤如下:
1. 在数据信息x末尾补充与生成多项式G(x)的次数相同的0,这里补充一个0,得到x=10010
2. 选取与生成多项式G(x)次数相同的二进制数作为标准生成数D,这里选取D为1000
3. 将数据信息x左移G(x)的次数,这里左移3位,得到x'=1001000
4. 将x'除以G(x)得到余数R,将R作为循环校验码,这里R为010
所以,循环校验码为010。
若接收方收到的数据信息x'=1101,此时应该计算x'除以生成多项式G(x)的余数,如果余数为0,则说明接收的数据没有出错;如果余数不为0,则说明接收的数据发生了错误。
具体纠错方法如下:
1. 将接收方收到的数据信息x'左移G(x)的次数,这里同样左移3位,得到x''=1101000
2. 将x''除以G(x),得到余数R,如果R为0,则说明接收的数据没有出错,否则说明接收的数据发生了错误。
3. 将x''中R对应的位置取反即可纠正错误,这里R为010,所以应该将x''的第4位取反,得到x'''=1111000,即纠正后的数据为1110。
阅读全文