zoukankan      html  css  js  c++  java
  • 模二除

    今天看CRC校验,看到了模二除,在这里把相关的“模二和”、“模二除”、“模二减”来总结一下:

    1、模二和的运算法则是:

    0+0=0 0 + 1 = 1    1+ 0 = 1     1+ 1 = 0

    理解:两个二进制数相加不考虑进位,例如01 + 11 = 10,对于两个数的低位都是1,进行模二和为0,

    但是没有进位,所以高位的0 加1 还是1,因为不考虑低位的进位。

    2、模二减的运算法则:

    0 - 0 = 0    0 - 1 = 1    1 - 0 = 1     1 - 1  = 0

    例: 1 0 1 0

    -      0 1 1 0

    ---------------------

       1 1 0 0        

    上式的减法中,第三位的减法中0-1,如果按照二进制的减法是有借位的,但是对于模二减是没有借位的,

    所以才会有第四位中的1-0仍然为1。

    3、模二乘的运算法则:

    0  *  0 = 0      0 * 1 =  0      1 * 0  =  0        1  *  1  = 1

    例如:    1 0 1 1

        X    1 1 1

    ---------------

           1 0 1 1

         1 0 1 1

       1 0 1 1

    -------------------

       1 1 0 0 0 1

    模二乘与一般二进制乘法的区别是在于下面的加法部分,模二乘的加法部分依然是模二加的法则

    4、模二除运算法则:

    模2除法运算定义为:
    0÷1=0        1÷1=1
    多位二进制模2除法也类似于普通意义上的多位二进制除法,但是在如何确定商的问题上两者采用不同的规则。后者按带借位的二进制减法,根 据余数减除数够减与否确定商1还是商0,若够减则商1,否则商0。多位模2除法采用模2减法,不带借位的二进制减法,因此考虑余数够减除数与否是没有意义 的。实际上,在CRC运算中,总能保证除数的首位为1,则模2除法运算的商是由余数首位与除数首位的模2除法运算结果确定。因为除数首位总是1,按照模2 除法运算法则,那么余数首位是1就商1,是0就商0。例如1100100÷1011=1110……110,列竖式计算:

         

  • 相关阅读:
    关于宇宙大爆炸的理论模型
    算法系列2《RSA》
    Codeforces Round #248 (Div. 1)——Nanami's Digital Board
    Cocos2d-x场景变化相关功能介绍
    NYOJ 745 蚂蚁问题(两)
    quick-cocos2d-x endToLua 退出会卡住
    编程算法
    linux基础知识1
    URAL 1553. Caves and Tunnels 树链拆分
    2014/11/13_ 随想
  • 原文地址:https://www.cnblogs.com/zhongguo135/p/2746760.html
Copyright © 2011-2022 走看看