首页 > 编程知识 正文

crc循环冗余校验码例题,在循环冗余校验中,除数比CRC码

时间:2023-05-05 23:53:29 阅读:279399 作者:2085

循环冗余校验码(CRC),是一种能力相当强的具有检错、纠错能力的校验码,常用于串行传送的辅助存储器与主机的数据通信和计算机网络中

 

为什么要使用CRC?

(在计算机网络中的应用)

数据在传输过程中,可能会产生比特差错:1可能变为0, 0可能变为1,因此为了保证数据传输的可靠性,必须采用各种差错检测措施

目前在数据链路层中广泛采用的就是循环冗余检验CRC的检错技术

(CRC技术也很容易实现)

 

CRC码

CRC码又称多项式码,任何一个二进制数都可以和一个对应的多项式建立一一对应的关系

举例

1011011对应的多项式为

解析:对应位上为1,则加上对应位的x多少次方

比如,以上,第六位为1(二进制数最右面是第0位),则加上  ;第五位为0,则不加;第四位为1,则加上,以此类推

思考

 对应的代码是多少?

答案:110101

 

模2运算

对应位进行异或操作:相同为0,不同为1

CRC原理

CRC运算就是在发送的数据后面加上 r 位冗余位,构成一个由 k 位信息位,加上 r 位冗余位组成的 n = k + r 位码字发出去

也许直接看概念或者原理,可能会不容易理解,所以这里直接给出例题进行讲解

例题:

当我们要发送一帧数据时,要发送的数据为101110。采用CRC 生成多项式是。试求应添加在数据后面的余数

每组比特数 k = 6(因为数据101110有6位)除数 = 1001,n = 3(因为根据得出对应二进制为1001,最高次幂为3,所以n = 3)先进行移位,得被除数 = 101110000(就是将要发送的数据后面补 n 个0)求余:进行模二除法,得余数 = 011(求余过程如下)

图中可以看到,最后的余数为 011

所以当我们发送数据的时候,就可以将此余数添加到要发送的数据后面,也就是 101110011,这就是编码后的CRC码,我们将其发送即可

当码字到达接收端时

若CRC码在接收端能被除数 1001 整除,则说明接收正确若CRC码不能被除数整除,则检测到出错

 

循环冗余校验码的检错能力: 可检测出所有奇数位错可检测出所有双比特的错可检测出所有小于、等于校验位长度的突发错

 

总结

采用CRC时,需要约定一个生成多项式(除数)

发送方:信息位 + 冗余位 = 发送码字 (冗余位就是上面例题中求的余数)

接收方:用收到的CRC码字除以生成多项式(除数),判断余数是否为0

为0:接收正确,接收数据帧不为0:接收有错,丢弃数据帧

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。