循环冗余校验
(Cyclic Redundancy Check,CRC)是一种常用的错误检测技术,它通过在数据后附加一个校验码来检测数据在传输或存储过程中是否发生错误。CRC的基本原理是将数据视为一个长多项式,然后除以一个预定的生成多项式,余数就是CRC校验码。
CRC的计算步骤:
- 选定生成多项式:这是一个二进制数,通常表示为一个多项式,如 x4+x+1,其二进制表示为
10011
。 - 准备数据:在原始数据后面附加
n
个零(其中 n 是生成多项式的次数),以确保数据的长度足够进行模二除法。 - 模二除法:使用模二除法(不进位的除法)将数据除以生成多项式,得到的余数(注意余数一定是
n
位的)。即为CRC校验码。 - 附加校验码:将CRC校验码附加到原始数据后面,形成新的数据帧进行传输。
模二除法示例:
假设我们有以下数据和生成多项式:
- 数据:
10110011
- 生成多项式:G(x)=x4+x3+1,二进制表示为
11001