串口通讯常用的CRC校验算法,对其算法一直不是很懂。其中一个很重要的概念---模2除算法,对于理解crc校验很有帮助。
模2除并不是除法,但有一点类似。普通除法不够除需向前借位。但模2除不借位,实际上模2除,对能除的概念和除法的概念也不一样。模2除的可除是指被除数最高位非0,且与除数个数相同。比如:
101011----------------------被除数
1100-----------------------除数
————
够除的位数,商1.(够除位数是第4位开始,而不是第5位)。
0110 余 (因为不借位,1010做减法减去1100;或者也可直接做异或)
————
1101 --------被除数(被除数第5位挪下来)
1100------除数
————
够除的位数,商1.
0001 余
————
11 ----被除数(被除数第6位挪下来)
1100------除数
————
不够除 商0
余11
所以最终:商 110 ,余数11