模运算与取余运算的区别
模运算与求余
首先,“模运算”与“求余运算”都是求取除法中产生的“余数”。比如 “7÷3”产生的余数就是1,所以无论对7和3采用“模运算”还是“求余运算”,得到的结果都是 1 。这也就是为什么我们在学习程序设计时经常把“模运算”与“求余运算”混为一谈的原因。
但是在数学专业人士的眼中,二者是有很大区别的。假如除数与被除数一正一负,那么这个区别就显现出来了:比如对 7 和 -3 进行模运算,得到的结果应该是-2,而求取余数的结果则应该是-1。这是为什么?因为二者的实际规则如下:
假设有两个数无法整除,也就是相除的结果是小数,比如: 5/-3 = -1.67,那么:
在求余运算中,把二者相除的商定义为-1,也就是把 -1.67 向 “0” 靠近所得到的第一个整数。由于 “ 被除数 = 除数 X 商 + 余数 ”,所以此时等式应为 “ 5 = -3 X -1 + 余数 ”,可得余数为 2 。也就是说,按照求余运算的规则, 5/-3 的结果是 2 。
而在求模运算中,则把 5 和 -3 相除的商定义为 -2 ,也就是把 -1.67 向 “负无穷大” 靠近所得到的第一个整数。于是根据 “ 被除数 = 除数 X 商 + 余数 ”,所以此时等式应为 “ 5 = -3 X -2 + 余数 ”,可得余数为 1 。也就是说,按照求余运算的规则, 5/-3 的结果是 1 。
在C语言中,“%”虽然被称为“模运算”,但其实执行的是上述“求余运算”的规则。而**在Python语言中,“%”则是采取了上述“求模运算”的规则。**所以在C语言和Python语言中分别执行 “5 % -3”,我们会看到完全不同的结果。
此外补充一点:一般说来,求模运算规定除数禁止为负数,Python2.5.1版本以前也忠实执行了该规定。所以在Python2.4.7等版本中,“5%-3”其实无法执行。不过从2.5.1版本开始,Python已经允许把负数作为除数。
模运算与取余运算的区别相关推荐
- c语言里取余数的运算的代码,Math——取模运算及取余运算(示例代码)
取模运算及取余运算 取余运算(Complementation)即我们小学时学的数学算术概念,而取模运算(Modulus Operation)常用于程序设计中 公式 a%b = a - (a/b * b ...
- python模运算求余_取模运算和取余运算
取模运算和取余运算 取模运算( " Modulo Operation " )和取余运算 ( " Complementation " )两个概念有重叠的部分但又不 ...
- C语言取模运算(取余运算)
C语言取模运算(取余运算) 取模算法: 取余(取模)的奥义 C语言运用 取模算法: 取模运算也叫取余运算,在C中用%来表示, 数学中叫mod. x mod y = x%y x%y = x - y[x/ ...
- 与运算和取余运算的配对条件
偶然在一个算法解析中,看到作者用与运算来代替取余运算,感觉属实有点装逼,于是有了钻研一下的想法. 首先通过实验来看看,与运算和取余运算存在一个怎样的关系. for i in range(100 ...
- 取模运算和取余运算的区别
先说结论:取模和取余在计算的目标上是一致的,只是商的不同,导致结果不同,取余和取模在被除数.除数同号时,结果是等同的,异号时会有区别. 那么 Why? 取模,取余是怎样计算的 在计算机中,对于整型数a ...
- java取余位运算_java学习--高效的除模取余运算(n-1)hash
没有测试过使用取余运算符和位运算符都做同一件事时的时间效率! 取余运算符% 如3除以2取余数 int a = a = a%; 结果为1 上面是传统的方式进行求余运算. 需要先将10进制转成2进制到内存 ...
- java hash取余_为什么Java的hash表的长度一直是2的指数次幂?为什么这个(hash(h-1)=hash%h)位运算公式等价于取余运算?...
1.什么是hash表? 答:简单回答散列表,在hash结构散列(分散)存放的一种数据集结构. 2.如何散列排布,如何均匀排布? 答:取余运算 3.Java中如何实现? 答:hash&(h-1) ...
- 编写整除运算程序JAVA_编写一程序把变量n的初始值设置为5814然后利用除法运算和取余.DOC...
编写一程序把变量n的初始值设置为5814然后利用除法运算和取余 <电子商务应用开发技术>实验指导书 一.下载,安装 JDK(Java Development Kit )是一切java应用程 ...
- 3位水仙花数计算pythonoj_简述 取模运算Modulo Operation 及其与 取余运算Complementation 区别联系...
综述: 取模运算("Modulo Operation")和取余运算("Complementation ")两个概念有重叠的部分但又不完全一致.主要的区别在于对负 ...
最新文章
- CSDN湘苗培优|保持热情,告别平庸
- ResNet在计算机视觉中的应用
- mysql二进制还原表_MYSQL 二进制还原
- 配置spring-mvc + simple-spring-memcached
- java的知识点17——java.util.Arrays类、多维数组
- linux mount 挂载U盘
- Ubuntu Linux配置IP地址
- 微服务监控zipkin、skywalking以及日志ELK监控系列
- 最全三大框架整合(使用映射)——DeptServiceImpl.java
- 秋高气爽FreeEIM
- python中findroot_Python源码问题算负数平方根无结果输出何解,python负数,def findRoot...
- 免费生成十字绣字体_十字绣鞋垫图案 手工鞋垫历史长
- zabbix中mysql连不上的排错_zabbix使用排错 - oschina130111的个人空间 - OSCHINA - 中文开源技术交流社区...
- Vim 经常使用快捷键及键盘图
- 实话实说?基金公司“存量时代”的创新
- 2020-2021 年度广东省职业院校学生专业技能大赛网络空间安全赛项竞赛规程
- php短信不同账号发,php用不同平台批量发短信
- 科技爱好者周刊(第 216 期):极简主义的胜利
- 安装Java并配置环境,安装eclipse,在GitHub中上传代码
- 贵金属白银与美元的关系