@CRC16按字节计算原理
CRC的实现原理在这里不再赘述,本节介绍个人理解的CRC按字节计算的原理。
参考文章
参考文章
下表中+号代表异或运算![CCITT按字节计算原理图
![CRC按字节计算原理图
以上为正向CRC计算,若为反向CRC计算则可将X7、X6~1、0及其对应列左右完全互换即可,互换完毕后,左右公式中的左移改为右移。
以上程序中MAXIM为CRC16反向计算,0xA001即0x8005的反向值;CCITT为CRC16CCITT反向计算,XMODEM为CRC16CCITT正向计算。其它类型的CRC16校验码计算可根据以上三种形式变换得出。
由于CRC16在过程中计算字节对应的CRC值运算量较大,所以直接采用查表法,而CCITT采用CRC实时计算的方式。
按字节计算的效率相比按位计算效率约高10倍。