模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,列竖式计算:
0 1 0 1
+0 0 1 1
──────
0 1 1 0

②模2减法运算定义为:
0-0=0 0-1=1 1-0=1 1-1=0
例如0110-0011=0101,列竖式计算:
0 1 1 0
-0 0 1 1
──────
0 1 0 1

③模2乘法运算定义为:
0×0=0 0×1=0 1×0=0 1×1=1
多位二进制模2乘法类似于普通意义上的多位二进制乘法,不同之处在于后者累加中间结果(或称部分积)时采用带进位的加法,而模2乘法对中间结果的处理方式采用的是模2加法。例如1011×101=100111,列竖式计算:
1 0 1 1
× 1 0 1
──────
1 0 1 1
0 0 0 0

1 0 1 1
────────
1 0 0 1 1 1

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

当余数位数与除数位数相同时,才进行异或运算,余数首位是1,商就是1,余数首位是0,商就是0。当已经除了几位后,余数位数小于除数,商0,余数往右补一位,位数仍比除数少,则继续商0,当余数位数和除数位数一样时,商1,进行异或运算,得新的余数,以此至被除数最后一位。

因为除数首位总是1,按照模2 除法运算法则,那么余数首位是1就商1,是0就商0。例如1100100÷1011=1110……110,列竖式计算:
1 1 1 0
────────
1 0 1 1〕1 1 0 0 1 0 0
- 1 0 1 1
──────
1 1 1 1
- 1 0 1 1
──────
1 0 0 0
- 1 0 1 1
──────
0 1 1 0
-0 0 0 0
──────
1 1 0

模2运算的原理 模2加法,模2减法,模2乘法,模2除法相关推荐

  1. 数字电路模2运算原理,及模2的加减乘除详解

    模2运算的原理(转) 模2运算是一种二进制算法,CRC校验技术中的核心部分,因此,我们在分析CRC算法之前,必须掌握模2运算的规则.与四则运算相同,模2运算也包括模2加.模2减.模2乘.模2除四种二进 ...

  2. 共模扼流圈的工作原理与作用以及特点和应用详解

    共模扼流圈的工作原理与作用以及特点和应用详解 - 电子常识 - 电子发烧友网 http://www.elecfans.com/dianzichangshi/20170609523118.html 共模 ...

  3. 基础算法一:大整数模积运算

    文章目录 一.要求 二.实现原理 三.示例代码 四.测试用例 一.要求 只能有加减位运算 支持大数(64位)模积运算(a * b mod m) 处理模加中的溢出问题 (如果 a + b = c 溢出, ...

  4. 如何高效进行模乘、模幂运算?——蒙哥马利算法(Montgomery Algorithm)从入门到精通

    蒙哥马利算法(Montgomery Algorithm)从入门到精通 ​ 加密算法中,模运算(包括模乘.模幂运算)是难以避免的,如何高效地进行模运算,是提高算法效率的一个关键. 直观的想法 ​ 在数学 ...

  5. 位运算模拟乘法,模指数运算

    1. 整数乘法(位运算) 使用位运算模拟乘法,其遵照以下的数学原理,即: ab=a(b020+b121+⋅⋅⋅+bn−12n−1)=a(b020)+a(b121)+⋅⋅⋅+a(bn−12n−1)ab= ...

  6. 幂运算 数组_Super Pow:如何高效进行模幂运算

    点击上方蓝字设为星标 东哥带你搞定算法~ 今天来聊一道与数学运算有关的算法题目,LeetCode 372 题 Super Pow,让你进行巨大的幂运算,然后求余数. int superPow(int ...

  7. Modular_exponentiation模幂运算

    https://en.wikipedia.org/wiki/Modular_exponentiation 蒙哥马利(Montgomery)幂模运算是快速计算a^b%k的一种算法,是RSA加密算法的核心 ...

  8. 初等数论--同余方程--同余方程运算:模逆运算,模指数运算

    初等数论--同余方程--同余方程运算:模逆运算,模指数运算 博主是初学初等数论(整除+同余+原根),本意是想整理一些较难理解的定理.算法,加深记忆也方便日后查找:如果有错,欢迎指正. 我整理成一个系列 ...

  9. C++modular exponentiation模幂运算的实现算法(附完整源码)

    C++modular exponentiation模幂运算的实现算法 C++modular exponentiation模幂运算的实现算法完整源码(定义,实现,main函数测试) C++modular ...

  10. 模幂运算问题,使用朴素算法和重复-平方算法(快速幂+C#计算程序运行时间)

    1.什么是模幂运算问题 给出a, k, mod 计算ak(%mod)a^k (\%mod)ak(%mod)的值 k是一个非常大的正整数(超过1e7) 附,一个可以提交的地方: leetcode 372 ...

最新文章

  1. python之模块csv之CSV文件的写入(按行写入)
  2. 马哥学习笔记——shell变量类型
  3. 单点登陆框架CAS的研究
  4. openjdk_从CLI监视OpenJDK
  5. 利用dos进入mysql数据库操作数据
  6. 【jvm】java jvm 报错 OutOfMemoryError: GC overhead limit exceeded
  7. 更新学生的成绩C语言,学生成绩管理系统C语言代码实现.pdf
  8. 《.Net 软件设计新思维》作者讲述成书的背后故事
  9. L1-018 大笨钟 (10 分) — 团体程序设计天梯赛
  10. UniWebview Bug处理记录
  11. 实现HTML调用打开本地软件文件
  12. 贝叶斯分析好坏_浅析贝叶斯定理及其应用
  13. Python 集和篇
  14. 全国青少年编程等级考试scratch三级真题2021年9月(含题库答题软件账号)
  15. QT 中控件缩放比列设置
  16. BIgDecimal的用法,及与各类数据类型的转换
  17. 计算机图形学常用算法实现11 扫描线z-buffer算法
  18. 众驰伟业:实现业财一体化,支撑企业数字化转型
  19. DDD系列第五讲:聊聊如何避免写流水账代码
  20. Elasticsearch 分词器详解(热更新词库)

热门文章

  1. 【java】照片查看器:开发一个简易照片查看器,自行设计功能和界面。
  2. 63 岁工程师的退休生活:开发一款计算器应用,22 天获 56800 下载!
  3. 四.川.木.里-2020-03-28火灾遥感数据下载汇总
  4. 使用打印方法将caj、pdz转pdf格式
  5. 第四章 INI配置——《跟我学Shiro》[张开涛]
  6. Pr插件大全一键安装包视频剪辑必备工具预设
  7. matlab 简明教程 薛山 pdf,matlab简明教程
  8. 图书馆管理系统——借书操作
  9. 【软件】RustDesk自己搭建远程控制服务软件 支持控制手机
  10. 台达b2伺服modbus通讯_谁用电脑与台达ASDA-B2伺服通讯上-专业自动化论坛-中国工控网论坛...