CRC校验的原理是什么?
作二进制除法。
1、发送数据比特序列为1101011011(10比特)。
2、生成多项式比特序列为10011(5比特,K=4),X的指数就是代表第几位为1,而且1=X的0次方。
3、将发送数据比特序列乘以2的K(由2可知K为4),那么产生的乘积为11010110110000。
4、将乘积用生成多项式比特序列去除,按模二算法得到余数1110。
模二算法就是两数相减不产生借位,0-1=1。
步骤如如下所示:
扩展资料:
二进制除法的CRC校验原理。
RC校验原理看起来比较复杂,因为大多数书上基本上是以二进制的多项式形式来说明的。其实很简单的问题,其根本思想就是先在要发送的帧后面附加一个数(这个就是用来校验的校验码,但要注意,这里的数也是二进制序列的,下同),生成一个新帧发送给接收端。
当然,这个附加的数不是随意的,它要使所生成的新帧能与发送端和接收端共同选定的某个特定数整除(注意,这里不是直接采用二进制除法,而是采用一种称之为“模2除法”)。到达接收端后,再把接收到的新帧除以(同样采用“模2除法”)这个选定的除数。因为在发送端发送数据帧之前就已通过附加一个数,做了“去余”处理(也就已经能整除了),所以结果应该是没有余数。
如果有余数,则表明该帧在传输过程中出现了差错。
【详细说明】“模2除法”与“算术除法”类似,但它既不向上位借位,也不比较除数和被除数的相同位数值的大小,只要以相同位数进行相除即可。模2加法运算为:1+1=0,0+1=1,0+0=0,无进位,也无借位;模2减法运算为:1-1=0,0-1=1,1-0=1,0-0=0,也无进位,无借位。
相当于二进制中的逻辑异或运算。也就是比较后,两者对应位相同则结果为“0”,不同则结果为“1”。如100101除以1110,结果得到商为11,余数为1。
参考资料来源:百度百科--CRC校验