模运算与求余

首先,“模运算”与“求余运算”都是求取除法中产生的“余数”。比如 “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已经允许把负数作为除数。

模运算与取余运算的区别相关推荐

  1. c语言里取余数的运算的代码,Math——取模运算及取余运算(示例代码)

    取模运算及取余运算 取余运算(Complementation)即我们小学时学的数学算术概念,而取模运算(Modulus Operation)常用于程序设计中 公式 a%b = a - (a/b * b ...

  2. python模运算求余_取模运算和取余运算

    取模运算和取余运算 取模运算( " Modulo Operation " )和取余运算 ( " Complementation " )两个概念有重叠的部分但又不 ...

  3. C语言取模运算(取余运算)

    C语言取模运算(取余运算) 取模算法: 取余(取模)的奥义 C语言运用 取模算法: 取模运算也叫取余运算,在C中用%来表示, 数学中叫mod. x mod y = x%y x%y = x - y[x/ ...

  4. 与运算和取余运算的配对条件

      偶然在一个算法解析中,看到作者用与运算来代替取余运算,感觉属实有点装逼,于是有了钻研一下的想法.   首先通过实验来看看,与运算和取余运算存在一个怎样的关系. for i in range(100 ...

  5. 取模运算和取余运算的区别

    先说结论:取模和取余在计算的目标上是一致的,只是商的不同,导致结果不同,取余和取模在被除数.除数同号时,结果是等同的,异号时会有区别. 那么 Why? 取模,取余是怎样计算的 在计算机中,对于整型数a ...

  6. java取余位运算_java学习--高效的除模取余运算(n-1)hash

    没有测试过使用取余运算符和位运算符都做同一件事时的时间效率! 取余运算符% 如3除以2取余数 int a = a = a%; 结果为1 上面是传统的方式进行求余运算. 需要先将10进制转成2进制到内存 ...

  7. java hash取余_为什么Java的hash表的长度一直是2的指数次幂?为什么这个(hash(h-1)=hash%h)位运算公式等价于取余运算?...

    1.什么是hash表? 答:简单回答散列表,在hash结构散列(分散)存放的一种数据集结构. 2.如何散列排布,如何均匀排布? 答:取余运算 3.Java中如何实现? 答:hash&(h-1) ...

  8. 编写整除运算程序JAVA_编写一程序把变量n的初始值设置为5814然后利用除法运算和取余.DOC...

    编写一程序把变量n的初始值设置为5814然后利用除法运算和取余 <电子商务应用开发技术>实验指导书 一.下载,安装 JDK(Java Development Kit )是一切java应用程 ...

  9. 3位水仙花数计算pythonoj_简述 取模运算Modulo Operation 及其与 取余运算Complementation 区别联系...

    综述: 取模运算("Modulo Operation")和取余运算("Complementation ")两个概念有重叠的部分但又不完全一致.主要的区别在于对负 ...

最新文章

  1. CSDN湘苗培优|保持热情,告别平庸
  2. ResNet在计算机视觉中的应用
  3. mysql二进制还原表_MYSQL 二进制还原
  4. 配置spring-mvc + simple-spring-memcached
  5. java的知识点17——java.util.Arrays类、多维数组
  6. linux mount 挂载U盘
  7. Ubuntu Linux配置IP地址
  8. 微服务监控zipkin、skywalking以及日志ELK监控系列
  9. 最全三大框架整合(使用映射)——DeptServiceImpl.java
  10. 秋高气爽FreeEIM
  11. python中findroot_Python源码问题算负数平方根无结果输出何解,python负数,def findRoot...
  12. 免费生成十字绣字体_十字绣鞋垫图案 手工鞋垫历史长
  13. zabbix中mysql连不上的排错_zabbix使用排错 - oschina130111的个人空间 - OSCHINA - 中文开源技术交流社区...
  14. Vim 经常使用快捷键及键盘图
  15. 实话实说?基金公司“存量时代”的创新
  16. 2020-2021 年度广东省职业院校学生专业技能大赛网络空间安全赛项竞赛规程
  17. php短信不同账号发,php用不同平台批量发短信
  18. 科技爱好者周刊(第 216 期):极简主义的胜利
  19. 安装Java并配置环境,安装eclipse,在GitHub中上传代码
  20. 贵金属白银与美元的关系

热门文章

  1. 发明专利申请需要的材料
  2. 【产品分析】电商SaaS--有赞
  3. HadoopMapReduce寻找共同好友
  4. Dynamo+Revit绘制桥梁上部结构-钢箱梁
  5. 大专生出身?你会的还只有初级Java工程师的技术吗
  6. c语言实现汉诺塔(图解)
  7. 姚明确诊非移位性胫骨骨裂 至少缺席未来六周比赛
  8. qt 数据库操作总结
  9. Web前端开发技术课程实验报告实验3:Vue路由实验
  10. 群晖搭建个人网站,内网穿透实现公网访问 1/3