模2除法(CRC校验码计算)_crc校验模二算法

模2除法(CRC校验码计算)_crc校验模二算法鉴于网上的讲解自己好不容易才看懂…所以自己整理了一下,也方便大家能够理解如果有不对或者不准确的地方,恳请大家指出…模2加减法模2除法需要用到模2加减法,关于模2加减法,其实就是异或操作,规则如下://不需要考虑进位和借位0±0=01±1=00±1=11±0=1例:1101±1001=0100计算如下:…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

鉴于网上的讲解自己好不容易才看懂…所以整理了一下, 也方便大家能够理解

模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

Jetbrains全家桶1年46,售后保障稳定

简记:同为0,异为1


模2除法:

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

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

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

    若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
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/200865.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 信号带宽与信道带宽「建议收藏」

    信号带宽与信道带宽「建议收藏」
    信号带宽是信号频谱的宽度,也就是信号的最高频率分量与最低频率分量之差,譬如,一个由数个正弦波叠加成的方波信号,其最低频率分量是其基频,假定为f=2kHz,其最高频率分量是其7次谐波频率,即7f=7×2=14kHz,因此该信号带宽为7f-f=14-2=12kHz。
       信道带宽则限定了允许通过该信道的信号下限频率和上限频率,也就是限定了一个频率通带。比如一个信道允许的通带为1.5kHz至15kHz,其带宽为13.5kHz,上面这个方波信号的所有频率成分当然能从该信道通过,如果

    2022年10月11日
    0
  • JS : clearInterval()失效,无法暂停setInterval()的原因[通俗易懂]

    JS : clearInterval()失效,无法暂停setInterval()的原因[通俗易懂]环境:我在函数A调用函数B,函数B里写了setInterval()。原因:页面加载时我调用了2次函数A,导致调用了2次setInterval(),导致有setInterval_id有2个值。clearInterval()只关闭了其中一个setInterval_id,另一个setInterval_id还会启动setInterval()。改为只调用一次函数A即可。…

    2025年7月13日
    0
  • 在flask中使用jsonify和json.dumps的区别

    在flask中使用jsonify和json.dumps的区别flask提供了jsonify函数供用户处理返回的序列化json数据,而python自带的json库中也有dumps方法可以序列化json对象,那么在flask的视图函数中return它们会有什么不同之处呢?想必开始很多人和我一样搞不清楚,只知道既然框架提供了方法就用,肯定不会错。但作为开发人员,我们需要弄清楚开发过程中各种实现方式的特点和区别,这样在我们面对不同的需求时才能做出相对合理的选择,而

    2022年5月24日
    32
  • 小李打怪兽——01背包

    小李打怪兽——01背包题目描述小李对故乡的思念全部化作了对雾霾天气的怨念,这引起了掌控雾霾的邪神的极大不满,邪神派去了一只小怪兽去对付小李,由于这只怪兽拥有极高的IQ,它觉得直接消灭小李太没有难度了,它决定要和小李在智力水平上一较高下。我们可否帮助小李来战胜强大的怪兽呢?问题是这样的:给定一堆正整数,要求你分成两堆,两堆数的和分别为S1和S2,谁分的方案使得S1*S1-S2*S2的结果小(规定S1>=S2)…

    2022年7月19日
    12
  • c语言匹配字符串表达式函数_java字符串匹配

    c语言匹配字符串表达式函数_java字符串匹配最近在写一个程序,需要用到字符串匹配,并且返回匹配的字符串,C语言库函数中的strtstr无法满足我的要求,只能自己写了。代码如下//stringmatchfunctionchar*matchString(constchar*buf,constchar*sub){ char*tbuf=buf; char*tsub=sub; inti=0;//tbuf…

    2022年8月21日
    3
  • es6删除对象的属性_ES6删除对象中的某个元素「建议收藏」

    [原]XAF添加日期筛选下拉选择1.ListView添加日期筛选下拉选择,选择指定,可指定日期范围2.CodeusingDevExpress.Data.Filtering;usingDevExpress.ExpressA…Android照相机应用前言Android在设计架构的时候,采用了mashup(混搭)的设计理念,也就是说一切都是…

    2022年4月11日
    67

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号