C语言中的模2除法:
模2除做法与算术除法类似,但每一位除(减)的结果不影响其它位,即不向上一位借位。所以实际上就是异或。然后再移位移位做下一位的模2减。
步骤如下:
a、用除数对被除数最高n位做模2减,没有借位。
(模2减规则:0-0=0 0-1=1 1-0=1 1-1=0)
b、除数右移一位,若余数最高位为1,商为1,并对余数做模2减。若余数最高位为0,商为0,除数继续右移一位。
c、一直做到余数的位数小于除数时,该余数就是最终余数。
举例:
1. 1100100÷1011 = 1110.....110
1011
————————
1011|1100100
1011
————
01111
1011
————
01000
1011
————
00110
2. 1111000÷1101 = 1011.....111
1011
————————
1101|1111000
1101
————
00100
0000
————
01000
1101
————
01010
1101
————
0111
用于实现CRC校验算法。