在计算机通信领域中,往往需要对数据进行错误检测和纠正,而Cyclic Redundancy Check(循环冗余校验码,缩写为CRC)就是其中一种常见的检验码。其原理是在数据传输的过程中,对数据进行一定的运算操作,生成一个特定的校验码。接收方同样进行相同的运算操作,以此判断接收到的数据是否正确。该校验码的长度可以根据需求进行设定,也可以选择不同的生成多项式进行运算,从而达到不同的检错能力。
CRC运算规则一般包括以下的步骤:
1. 确定生成多项式,通常使用的是二进制多项式,其中包含了选定的校验位数。
2. 给待传输的数据添加k个0,其中k是校验位数。这个数据被称为生成码。
3. 对生成码进行除法运算,使用生成多项式进行除法运算,得到一个余数。
4. 把生成码和余数进行拼接,得到带校验码的数据。校验码就是该余数。
5. 将带校验码的数据传输给接收方。
6. 接收方同样执行第2个步骤,得到接收到的生成码,并进行除法运算,得到新的余数。
7. 如果接收到的余数为0,则认为传输数据没有错误。否则,接收方将认为该数据出现错误。
此外,CRC还有其他的性质和应用场景。
1. 反转性
CRC运算是在二进制数中进行,而在不同机器之间传输的字节可能存在不同的顺序。因此,在进行CRC运算时,需要将每个字节进行反转处理。这种处理称为反转性。
2. 滑动性
在CRC检验过程中,生成码和校验码都不会传输,只有带校验码的数据被传输。这意味着如果传输数据发生了滑动,即位置发送了改变,CRC码也会随之改变,从而使其无法识别。为了避免这种情况的发生,需要在CRC码计算中添加唯一的初始值。
3. 告警性
由于CRC码具有比较好的检错能力,其被广泛应用于现代通信领域中,例如以太网、USB通信和RS232通信等。但是,应该注意的是,CRC码也无法保证百分之百的检错率。因此,在实际应用中,可能需要采取额外的纠错机制进行配合使用。
综上所述,CRC原理及运算规则是一种常见的数据检验和校验技术,其可以实现不同级别的检错和纠错能力。为了保证其运行的正确性和高效性,还需要注意CRC的反转性、滑动性和告警性等特点。
微信扫一扫,领取最新备考资料