CRC校验码,中文是循环冗余校验码。在计算机网络、计算机组成原理等课程中均常见,他是一种常见的计算机校验码。它的实际原理十分容易理解:简单的说,它的原理就是用一个数去除以约定好的数。如果传输前后的数据除以这个数,所得余数一样,则传输正确,反之传输错误。
先举一个十进制的例子,用81除以6,得13,余3. 81就相当于信息位,余数就相当于校验位。添加校验位的目的就是确保余数为0.(这里只是举个例子)
现在用二进制来考虑。在这里以一道例题为准:给出生成多项式G(x)=x3+x2+1 信息码为101001,求对应的CRC码。
1)对于这道题,生成多项式最高次为3,信息码为6,那么CRC码对应为9位。
2)生成多项式写开,即G(x)=1*x3+1*x2+0*x1+1 这就意味着约定的除数为1101.已知信息码和除数,进行竖式模2除。
说明:模2除和普通的竖式除法差别不大,被除数在不足时也需要补零,但是在除得当前位的商时,以最高位为准,目的是消掉目前还剩下的被除数的最高位。此外,在减法时变成了异或计算。
101001除以1101,求得最后的余数为001,001即为校验位。详细计算过程如下所示:
3)接收方收到101001 001后,用1101模2除,余数为000,即表示传输无误。
如果余数不是0,比如001,那么就意味着出错位为第一位,余数002表示第二位出错。。。。。之所以成为循环冗余校验,就是因为用出错的码除以余数,会得到下一个出错码,如xxxx001除以余数变成xxx010.。。。如此往复。
CRC校验码可以检测出奇数个、双比特和所有小于。等于校验位长度的校验码。
今天的文章CRC校验码分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/57232.html