模2运算的加减乘除运算
在基础的算法中,我们学的基本都是模二运算法则,什么是模二运算,这里简单做一下介绍。
模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运算的加减乘除运算相关推荐
- 位运算实现加减乘除运算
我们知道,计算机最基本的操作单元是字节(byte),一个字节由8个位(bit)组成,一个位只能存储一个0或1,其实也就是高低电平.无论多么复杂的逻辑.庞大的数据.酷炫的界面,最终体现在计算机最底层都只 ...
- C++学习笔记-----用位运算实现加减乘除
C++学习笔记-----用位运算实现加减乘除 原文:http://blog.csdn.net/sinat_35261315/article/details/72904945 数据在计算机内存中是以二进 ...
- mysql实现俩个属性加减运算_mysql加减乘除
云数据库 MySQL 云数据库(RDS for MySQL)是稳定可靠.可弹性伸缩的云数据库服务.通过云数据库能够让您几分钟内完成数据库部署.云端完全托管,让您专注于应用程序开发,无需为数据库运维烦恼 ...
- 数学运算符 +(加)、-(减)、(乘)、(除)、%(取余;取模)、(整除)、(幂运算)及分支结构
数学运算符: +(加).-(减).*(乘)./(除).%(取余;取模).//(整除).**(幂运算) 1. +.-.*./ python的加减乘除和小学数学中的加减乘除的功能一样 print(3 + ...
- 定点数和浮点数加减乘除运算详解【计算机组成原理】---真的建议收藏啊!!!
前言: 你知道计算机内部是如何进行加减运算的吗?可能你知道,那你知道计算机内部是如何进行乘除法运算的呢?肯定和我们十进制运算是不一样的.当我查找资料的时候,发现除了书本很少有这样的知识点.所以我想和大 ...
- c语言goord函数,php的chr和ord函数实现字符加减乘除运算实现代码
php的chr和ord函数实现字符加减乘除运算实现代码 chr函数用于将ASCII码转换为字符 ord函数是用来字符转换为ASCII码 ASCII码是计算机所能显示字符的编码,它的取值范围是0-255 ...
- shell 做加法运算_Shell数学计算(算术运算,加减乘除运算)
如果要执行算术运算(数学计算),就离不开各种运算符号,和其他编程语言类似,Shell 也有很多算术运算符,下面就给大家介绍一下常见的 Shell 算术运算符,如下表所示.Shell 算术运算符一览表算 ...
- java float 加法_JAVA 实现精确的加减乘除运算
JAVA在加减乘除运算时易发生精度丢失,达不到我们想要的计算结果:为了能够精确表示.计算浮点数,JAVA提供了BigDecimal类,可以以BigDecimal为基础定义一个Arith工具类,代码如下 ...
- 简单工厂模式--加减乘除运算
下面基于简单的<加减乘除运算>实例来讲讲实用简单工厂模式:<备注:以后根据认识的加深,可以添加和修改内容> 需求分析:希望程序提供"加减乘除"四种功能. 功 ...
- 用位运算实现加减乘除
听同学百度二面中,不准用四则运算操作符来实现四则运算.一想就想到了计算机组成原理上学过的.位运算的思想可以应用到很多地方,这里简单的总结一下用位运算来实现整数的四则运算. 加法运算: [cpp] vi ...
最新文章
- 利用人工智能众包数据,加速药物发现
- 理解 RXSwift:单元测试(四)
- java面试题二十七 多线程考题2
- 少女为什么会身上香香的?
- LeetCode 559. N叉树的最大深度
- 小白必学教程Python编码
- 7种最有效的懒人减肥方法,收藏了!
- 20145237 Exp2 后门原理与实践
- 【Java例题】7.5	文件题2-学生成绩统计
- [APIO2014]序列分割
- qPCR定量方法在肠道微生物特定种属定量应用
- win10更新后应用无法连接服务器,win10更新无法连接到更新服务怎么办_win10无法连接到更新服务的解决方法...
- 循环肿瘤细胞(circulating tumor cells,CTCs)
- 互联网实习面试的一些心得(非计算机专业)
- HOS Develop Notes-开启ssh服务
- [基础代码仓库]基于STM32C8T6的库函数ADC模拟+DMA多通道转运代码
- 【李刚-21天通关Python-03】之 运算符
- 三个等号和两个等号的区别(“===”和“==”)
- 如何解决夜神模拟器连不上adb的问题
- ipad计算机弹音乐,iPad下的音乐创作工具,Korg发布ELECTRIBE Wave波表音乐创作工具...
热门文章
- VMware15.5.2安装unlocker时下载工具一直失败
- 网约车源码 打车APP 同城打车代驾小程序源码
- python语法笔记-linux
- php免登录发帖源码,企业版PHP自动发卡源码免授权优化版源码
- Webx3 学习笔记
- KITTI数据集评估方法小结
- c#二次开发明华URF-R330读写器读写问题解决方案
- 王不留,混迹基层八年穷屌丝,考研准备四个月,考上中国科技大学MBA,成为一家软件上市公司中层管理者(附备考攻略)
- JavaScript + jQuery 知识复习总结(附超实用jQuery中文文档)
- AVEVA PDMS 二次开发之PML语言基础 21/10/21 01.0.02