在基础的算法中,我们学的基本都是模二运算法则,什么是模二运算,这里简单做一下介绍。

模2运算

是一种二进制算法,CRC校验技术中的核心部分。与四则运算相同,模二运算也包括模二加法、模二减法、模二乘法、模二除法四种二进制运算。与四则运算不同的是模二运算不考虑进位和借位,模二算术是编码理论中多项式运算的基础。模二算术在其他数字领域中的应用也是很广泛的。

移位寄存器的每一级只可能有两种不同的存数(或状态),分别用0和1来表示。这里, 0和1不再具有一般数量的含义,而只具有逻辑含义。对于这样一种只包含0和1两个元素(符号)的集合(叫做二元集)来说,普通的四则运算不再适用,因而必须重新规定一种新的运算规则。所谓模2运算就是这样一种新的运算规则。

模2运算是一种二进制算法,CRC校验技术中的核心部分。与四则运算相同,模2运算也包括模2加、模2减、模2乘、模2除四种二进制运算。而且,模2运算也使用与四则运算相同的运算符,即“+”表示模2加,“-”表示模2减,“×”或“·”表示模2乘,“÷”或“/”表示模2除。与四则运算不同的是模2运算不考虑进位和借位,即模2加法是不带进位的二进制加法运算,模2减法是不带借位的二进制减法运算。这样,两个二进制位相运算时,这两个位的值就能确定运算结果,不受前一次运算的影响,也不对下一次造成影响。

下面就一一介绍这几种模二运算。

  • 模二加法
    所谓“模2加法”就是0和1之间的加法,其中0+0 =0,1+0 =0+1 =1,1+1=0(!)。这种运算在通信和计算机上是常用的,而且并不神秘.你可以把0和1分别想成是“偶数”和“奇数”,那么前两个式子分别代表:偶数加偶数等于偶数,奇数加偶数等于奇数,而式1+1=0就是奇数加奇数等于偶数.对于任意多个数a1,a2,…,am(每个都是0或1),可以把它们做模2加法a1+a2+…+am。不难看出,当这m个数中有奇数个1时,结果为1,否则结果为0。

对二进制数定义模2加法,规则非常简单:即每个数位上分别作模2加法,由此得出一个新的二进制数,例如[ 1101]+[111]+[101]=[1111],写成算式为

个位数字共有3个1,所以模2加为1(不进位)。同样的,其他数位上也均有奇数个1,不同数位之间彼此无关地运算,所以模2加法是不进位的加法。

  • 模二减法

模2减法是一种不考虑借位的减法,其定义如下:
0-0=0
1-1=0
1-0=1
0-1=1

同样,第四式代表了模2减法的特征,从它也可得出2=0及+1=-1的结论。在多位模减法中,每位都按上述定义进行运算,不考虑借位问题。例如:

此结果和前面模2加法的结果完全一样,进而发现关于模2运算的一个重要特点,模2加法和模2减法实际上是一回事,所有用模2减法的地方都可用模2加法来代替,故不用给模2减法定义专用的符号。

模2加的定义可以得出一个重要结论:奇数个1相加得1,偶数个1相加得0。同样的结论:奇数个1相减的1,偶数个1相减的0。这个结论在奇偶校验中是很有用的。

  • 模二乘法

一位数的模2乘法定义如下:
0×0=0
0×1=0
1×0=0
1×1=1

多位数的模2乘法与普通乘法一样演算,如:

唯一的区别是,部分积相加时按模2加,即奇数个1相加得1,偶数个1相加得0。

  • 模二除法
    模2除法是模2乘法的逆运算。如:

    模2除法具有下列三个性质:
1、当最后余数的位数小于除数位数时,除法停止。
2、当被除数的位数小于除数位数时,则商数为0,被除数就是余数。
3、只要被除数或部分余数的位数与除数一样多,且最高位为1,不管其他位是什么数,皆可商1。

模2运算的加减乘除运算相关推荐

  1. 位运算实现加减乘除运算

    我们知道,计算机最基本的操作单元是字节(byte),一个字节由8个位(bit)组成,一个位只能存储一个0或1,其实也就是高低电平.无论多么复杂的逻辑.庞大的数据.酷炫的界面,最终体现在计算机最底层都只 ...

  2. C++学习笔记-----用位运算实现加减乘除

    C++学习笔记-----用位运算实现加减乘除 原文:http://blog.csdn.net/sinat_35261315/article/details/72904945 数据在计算机内存中是以二进 ...

  3. mysql实现俩个属性加减运算_mysql加减乘除

    云数据库 MySQL 云数据库(RDS for MySQL)是稳定可靠.可弹性伸缩的云数据库服务.通过云数据库能够让您几分钟内完成数据库部署.云端完全托管,让您专注于应用程序开发,无需为数据库运维烦恼 ...

  4. 数学运算符 +(加)、-(减)、(乘)、(除)、%(取余;取模)、(整除)、(幂运算)及分支结构

    数学运算符: +(加).-(减).*(乘)./(除).%(取余;取模).//(整除).**(幂运算) 1. +.-.*./ python的加减乘除和小学数学中的加减乘除的功能一样 print(3 + ...

  5. 定点数和浮点数加减乘除运算详解【计算机组成原理】---真的建议收藏啊!!!

    前言: 你知道计算机内部是如何进行加减运算的吗?可能你知道,那你知道计算机内部是如何进行乘除法运算的呢?肯定和我们十进制运算是不一样的.当我查找资料的时候,发现除了书本很少有这样的知识点.所以我想和大 ...

  6. c语言goord函数,php的chr和ord函数实现字符加减乘除运算实现代码

    php的chr和ord函数实现字符加减乘除运算实现代码 chr函数用于将ASCII码转换为字符 ord函数是用来字符转换为ASCII码 ASCII码是计算机所能显示字符的编码,它的取值范围是0-255 ...

  7. shell 做加法运算_Shell数学计算(算术运算,加减乘除运算)

    如果要执行算术运算(数学计算),就离不开各种运算符号,和其他编程语言类似,Shell 也有很多算术运算符,下面就给大家介绍一下常见的 Shell 算术运算符,如下表所示.Shell 算术运算符一览表算 ...

  8. java float 加法_JAVA 实现精确的加减乘除运算

    JAVA在加减乘除运算时易发生精度丢失,达不到我们想要的计算结果:为了能够精确表示.计算浮点数,JAVA提供了BigDecimal类,可以以BigDecimal为基础定义一个Arith工具类,代码如下 ...

  9. 简单工厂模式--加减乘除运算

    下面基于简单的<加减乘除运算>实例来讲讲实用简单工厂模式:<备注:以后根据认识的加深,可以添加和修改内容> 需求分析:希望程序提供"加减乘除"四种功能. 功 ...

  10. 用位运算实现加减乘除

    听同学百度二面中,不准用四则运算操作符来实现四则运算.一想就想到了计算机组成原理上学过的.位运算的思想可以应用到很多地方,这里简单的总结一下用位运算来实现整数的四则运算. 加法运算: [cpp] vi ...

最新文章

  1. 利用人工智能众包数据,加速药物发现
  2. 理解 RXSwift:单元测试(四)
  3. java面试题二十七 多线程考题2
  4. 少女为什么会身上香香的?
  5. LeetCode 559. N叉树的最大深度
  6. 小白必学教程Python编码
  7. 7种最有效的懒人减肥方法,收藏了!
  8. 20145237 Exp2 后门原理与实践
  9. 【Java例题】7.5 文件题2-学生成绩统计
  10. [APIO2014]序列分割
  11. qPCR定量方法在肠道微生物特定种属定量应用
  12. win10更新后应用无法连接服务器,win10更新无法连接到更新服务怎么办_win10无法连接到更新服务的解决方法...
  13. 循环肿瘤细胞(circulating tumor cells,CTCs)
  14. 互联网实习面试的一些心得(非计算机专业)
  15. HOS Develop Notes-开启ssh服务
  16. [基础代码仓库]基于STM32C8T6的库函数ADC模拟+DMA多通道转运代码
  17. 【李刚-21天通关Python-03】之 运算符
  18. 三个等号和两个等号的区别(“===”和“==”)
  19. 如何解决夜神模拟器连不上adb的问题
  20. ipad计算机弹音乐,iPad下的音乐创作工具,Korg发布ELECTRIBE Wave波表音乐创作工具...

热门文章

  1. VMware15.5.2安装unlocker时下载工具一直失败
  2. 网约车源码 打车APP 同城打车代驾小程序源码
  3. python语法笔记-linux
  4. php免登录发帖源码,企业版PHP自动发卡源码免授权优化版源码
  5. Webx3 学习笔记
  6. KITTI数据集评估方法小结
  7. c#二次开发明华URF-R330读写器读写问题解决方案
  8. 王不留,混迹基层八年穷屌丝,考研准备四个月,考上中国科技大学MBA,成为一家软件上市公司中层管理者(附备考攻略)
  9. JavaScript + jQuery 知识复习总结(附超实用jQuery中文文档)
  10. AVEVA PDMS 二次开发之PML语言基础 21/10/21 01.0.02