模2运算

2019-04-13 11:47发布

模2运算是一种二进制算法,CRC校验技术中的核心部分。与四则运算相同,模2运算也包括模2加、模2减、模2乘、模2除四种二进制运算。而且,模2运算也使用与四则运算相同的运算符,即“+”表示模2加,“-”表示模2减,“×”或“·”表示模2乘,“÷”或“/”表示模2除。与四则运算不同的是模2运算不考虑进位和借位,即模2加法是不带进位的二进制加法运算,模2减法是不带借位的二进制减法运算。这样,两个二进制位相运算时,这两个位的值就能确定运算结果,不受前一次运算的影响,也不对下一次造成影响。

模2加

等同于“异或”运算,两个序列中对应位,相加,不进位,相同为0,不同为1。
如:1+1=0 , 0+0=0,   1+0=1,0+1=1

模2减

减法规则同加法规则一样,按加法规则计算 如:0-0=0, 1-1=0, 0-1=1, 1-0=1

模2乘

多位二进制模2乘法类似于普通意义上的多位二进制乘法,不同之处在于后者累加中间结果(或称部分积)时采用带进位的加法,而模2乘法对中间结果的处理方式采用的是模2加法。例如1011×101=100111,列竖式计算: 0*0=0,    0*1=0,    1*0=0,   1*1=1     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除

模2除法与算术除法类似,但每一位除的结果不影响其它位,即不向上一位借位,所以实际上就是异或 111000除以1101:
  1. #第一步 1111000 1101 0010000 ----余数,商为1,只要第一位非0商就是1 #第二步,每步移一位,当起始位为0时,除以0;为1时除以除数。 010000 0000 010000 ----余数,商为0,只要第一位是0商就是0 #第三步 10000 1101 01010 -----余数,商为1,这里的余数你猜出,其实就是对应位异或 #第四步 1010 1101 0111 ------余数,商为1,如果位数比除数还小,不再继续运算









热门文章