zoukankan      html  css  js  c++  java
  • 【转载】模2除法(CRC校验码计算)

    https://blog.csdn.net/qq_33411687/article/details/82593466

    模2加减法

    模2除法需要用到模2加减法,关于模2加减法,其实就是异或操作,规则如下:

    //不需要考虑进位和借位
    0 ± 0 = 0
    1 ± 1 = 0
    0 ± 1 = 1
    1 ± 0 = 1
    例: 1101 ± 1001 = 0100
    计算如下:
    		  1 1 0 1 
    		± 1 0 0 1 
    		-----------
    		  0 1 0 0
    

    简记:同为0,异为1


    模2除法:

    规则:假设被除数X,和除数P,余数R

    1. X除以P(对X和P做模2加减法),被除数首位为1时,商1,为0时商0

    2. 所得余数去除首位(即左移一位):

      • R第一位为0,将其作为新的被除数,除以0,此时其首位为0,商即为0
      • R第一位为1,将其作为新的被除数,除以P,此时其首位为1,商即为1
    3. 重复第2步直到R位数少于P位数


    例:1111000对除数1101做模2除法:

    先说结果: 商1011111

    整体运算

          1 0 1 1     //商
    ---------------
    1 1 1 1 0 0 0     //被除数,注意首位为1
    1 1 0 1	          //被除数首位为1,除以除数
    ---------------
      0 1 0 0 0 0     //余数去除首位,作为新的被除数
      0 0 0 0         //被除数首位为0,除以0
    ---------------
        1 0 0 0 0     //余数去除首位,作为新的被除数
        1 1 0 1       //被除数首位为1,除以除数  
    ---------------
          1 0 1 0     //余数去除首位,作为新的被除数
          1 1 0 1     //被除数首位为1,除以除数
    ---------------
            1 1 1     //余数,此时余数位数少于除数,不能继续除了
    

    分步分析

    第一步(每一步其实都是模2加减法运算):
          1         //商
    -------------
    1 1 1 1 0 0 0   //被除数,注意首位为1
    1 1 0 1	        //除数
    -------------
    0 0 1 0 0 0 0   //余数,模2运算后结果
    

    商的第一位:被除数首位为1,商为1(只要被除数首位非0,商就是1)

    第二步:余数去除首位(左移一位),当第一位为0时,除以0;为1时,除以除数。
          1 0        //商
    ---------------
      0 1 0 0 0 0    //余数去除首位,作为新的被除数
      0 0 0 0        //被除数首位为0,除以0
    ---------------
      0 1 0 0 0 0    //余数,模2运算后结果
    

    商的第二位:被除数首位为0,商为0(只要被除数首位是0商就是0)

    第三步
          1 0 1      //商
    ----------------
        1 0 0 0 0    //余数去除首位,作为新的被除数
        1 1 0 1      //被除数首位为1,除以除数
    ----------------
        0 1 0 1 0    //余数,模2运算后结果
    

    商的第三位:被除数首位为1,商为1

    第四步
          1 0 1 1     //商
    ----------------
          1 0 1 0     //余数去除首位,作为新的被除数
          1 1 0 1     //被除数首位为1,除以除数
    ----------------
          0 1 1 1     //余数,此时余数位数(这里的0要忽略掉,不参与下一轮)少于除数位数,不能继续除了
    

    商的第四位:被除数首位为1,商为1
    此时不能继续做除法,计算结束

    得到最终结果: 商1011111
  • 相关阅读:
    第十二章 圆周率的计算问题分析
    第十一章:random库概述
    【模板】分治 FFT
    [PKUWC2018]Slay the Spire
    [PKUWC2018]随机算法
    [PKUWC2018]Minimax
    线段树合并初探
    平衡树初探
    Luogu P1613 跑路 题解报告
    CH138 兔子和兔子 题解报告
  • 原文地址:https://www.cnblogs.com/zhengzc/p/12691674.html
Copyright © 2011-2022 走看看