• 模2运算


    模2运算是一种二进制算法,CRC校验技术中的核心部分,因此,我们在分析CRC算法之前,必须掌握模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,

      列竖式计算:

      0101

     +0011

     ──────

      0110

    ②模2减法运算定义为:

      0-0=0

      0-1=1

      1-0=1

      1-1=0

      例如0110-0011=0101,

      列竖式计算:

      0110

     -0011

     ──────

      0101

    ③模2乘法运算定义为:

      0×0=0

      0×1=0

      1×0=0

      1×1=1

      多位二进制模2乘法类似于普通意义上的多位二进制乘法,不同之处在于后者累加中间结果(或称部分积)时采用带进位的加法,而模2乘法对中间结果的处理方式采用的是模2加法。

      例如1011×101=100111,

      列竖式计算:

      1011

       ×101

        ──────

      1011

      +0000

    +1011

    ────────

      100111

    ④模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

      列竖式计算:

           1110

       ────────

    1011)1100100

       1011

      ──────

              1111

       -1011

      ──────

               1000

        -1011

      ──────

         0110

               -0000

      ──────

                  11

  • 相关阅读:
    java IO输入输出流实现文本复制
    java HashMap
    java TreeSet 实现存自定义不可重复数据
    java中的ArrayList 使得集合中的对象不重复
    java 多线程执行过程
    final关键字的使用
    java中==和equals的区别
    java面向对象理解
    java语言基础(变量和运算符)
    学习Java第一天,大致了解
  • 原文地址:https://www.cnblogs.com/javaleon/p/4291478.html
Copyright © 2020-2023  润新知