模2除法(CRC校验码计算)模2除法和算数除法不同,文中例子120/13用模2除法结果:商11余数7,而算数除法结果:商9余数3

 

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(应该是P),此时其首位为0,商即为0
    • R第一位为1,将其作为新的被除数,除以P,此时其首位为1,商即为1
  3. 重复第2步直到R位数少于P位数

  4. 没有讲到为什么要去除首位(自己备注)猜测和寄存器移位有关系,也有点类似算数除法竖式中每一步的商和除数的积和上面的被除数差的最高位是0例如163除以7


例: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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值