模2的运算性质,模3运算和模2运算
模2运算是二进制算法,是CRC检测技术的核心部分。 因此,在分析CRC算法之前必须掌握模2运算的规则。 与四则运算相同,模式2运算也包括模式2加法、模式2减法、模式2乘法、模式2除法四种二进制运算。 另外,模式2运算也使用与四则运算相同的运算符。 即,“”表示模式2的加法,“-”表示模式2的减法,“”或“”表示模式2的乘法,“”或“/”表示模式2的除法。 与四则运算不同,类型2运算不考虑进位和借位。 也就是说,模型2加法是没有进位的2进制加法,模型2减法是没有进位的2进制减法。 这样,在2进制相位运算时,2个比特的值没有受到前一次运算的影响,也可以在不影响下一次的情况下确定运算结果。
模2加法定义如下
0 0=0 0 1=1 1 0=1 1 1=0
例如,0101 0011=0110,列纵向计算:
0 1 0 1
0 0 1 1
———————————————————————————————————
0 1 1 0
2级减法的定义如下:
0-0=0 0-1=1 1-0=1 1-1=0
例如,0110-0011=0101,列纵向计算:
0 1 1 0
-0 0 1 1
———————————————————————————————————
0 1 0 1
2级乘法的定义如下
00=0 01=0 10=0 11=1
多位二进制乘法类似于一般意义上的多位二进制乘法。 但是,后者在累计中间结果(或部分积)时使用带进位的加法,而模平方使用模2加法作为处理中间结果的方法。 例如,1011101=100111,列纵向计算:
1 0 1 1
1 0 1
———————————————————————————————————
1 0 1 1
0 0 0 0
1 0 1 1
—————
1 0 0 1 1 1
模2除法定义如下
01=0 11=1
多位二进制二除法也类似于普通意义上的多位二进制除法,但在如何确定商的问题上两者采用了不同的规则。 后者用带位数的二进制减法,根据剩余减法算术是否充分减少来决定是商1还是商0,如果充分减少,则为商1,否则为商0。 多位模式2除法采用模式2减法,不借位的2进制减法,所以考虑馀数能否减少是没有意义的。 实际上,CRC运算确保除数顶部始终为1,馀数顶部和除数顶部的模2除法结果决定模2除法的商。
只有当剩余位数与除数的位数相同时才进行异或运算,剩余的顶部为1,商为1,剩余的顶部为0,商为0。 已经去掉数位后,如果余数小于除数,商0,余数向右补一位,位数少于除数,则继续商0,如果余数与除数位数相同,商1进行异或运算,得到新的余数,到达被除数的最后一位。
除数的顶端总是1,所以根据模型2的除法定律,如果馀数的顶端是1,则商1,0,则商0。 例如11001001011=1110……110、列纵式计算:
1 1 1 0
—————
1111 ) 10010
– 1 0 1 1
———————————————————————————————————
1 1 1 1
– 1 0 1 1
———————————————————————————————————
1 0 0 0
– 1 0 1 1
———————————————————————————————————
0 1 1 0
-0 0 0 0
———————————————————————————————————
1 1 0