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

模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. IDEA集成Docker插件实现一键自动打包部署微服务项目
  2. ppt怎么加注解文字_ppt注释的使用方法
  3. 局部图像描述子——Harris角点检测器
  4. NSDate与NSDateFormatter的相关用法
  5. java输出减法表,Calendarjava时间加减法和格式化输出
  6. 前端学习(2253)如何进行团队合作
  7. Linux命令之find命令中的-mtime参数
  8. Java笔记-Log4j在Spring Boot中的使用
  9. 迅雷不及掩耳 山寨版iPhone 5令人瞠目
  10. 解读全新闪存FlashSystem 9100
  11. So easy 将程序部署到服务器
  12. 天翼云云主机快照、云硬盘备份、云主机备份之间的区别
  13. 使用 git add -p 整理 patch
  14. 【计算机网络】学习笔记
  15. Android多进程实现,一个APP多个进程
  16. 用Python做一个会旋转的五彩风筝
  17. [存储-测试工具]vdbench文件测试随机IO混合读写配置模板
  18. 虚拟化查看服务器sn,linux 查看服务器sn号
  19. 二叉搜索树BST的学习
  20. js圆形轨迹公式(转)

热门文章

  1. 【教程】Edraw Max使用教程:创建一个基本流程图
  2. 部署Ansible与常用模块
  3. 谈一下MSDN和下载原版windows7
  4. procc 编程需要oracle11.lib,AVProVideo Pro 1.7.3版本 1.7.3属于稳定版本 (官网最新版1.9.1)...
  5. 听音扒谱app_掌握这些,你也可以轻松扒谱(下)
  6. 廖雪峰git学习(3)分支管理【待续】
  7. 2022年4月第十三届蓝桥杯省赛C组C语言/C++真题及答案
  8. 计算机以弧计算和以度计算公式,弧度换算角度[角度换算弧度计算器]_弧度数计算公式...
  9. 【蓝牙】设备管理器找不到蓝牙
  10. cxonev4验证用户_欧姆龙编程组态软件Omron CX-ONE V4.50 简体中文版