C++中程序中,求模和求余运算很多时候都会让人弄不清,甚至在有些教材上也会混淆概念,比如在《C++ primer 第五版(中文版)》中,关于其他类型向无符号类型转换时,如果原值大小超出转换后类型的范围时,原书写的是取模后的余数,其实是直接进行取模;再如,C++二级教程中把%称作求余(求模),实际上我们应用%是在求余。

  接下来我们一起来学习下求模与求余运算:

   ①求模与求余运算我们都首先进行求整数商:c=a/b;

   ②然后进行求模或求余运算:r=a-c*b;

  但二者的主要区别在于求整数商上,求模运算整数上会向-∞取整,而求余运算是向0取整。

  例如:

   (1) a=-2,b=3:

   a/b=(-1或0),求模时取整数商-1,然后进行②,得到模1,
   求余时取整数商0,得到余为-2;

   (2) a=3,b=-2:
   a/b=(-2或-1),求模时取整数商-2,得到模-1,
   求余时取整数商-1,得到余1;

   (3) a=-3,b=-2:

   a/b=(1或2),求模时取整与求余时整数商都是1,所以模等于余数,都等于-1;

   (4) a=3,b=2:

   a/b=(1或2),模与余都是1.
  我们来总结以下,当a和b同号时,整数商大于等于0,所以求模与求余的整数商相同,所以进行②以后得到的结果相同。当a和b 异号时,整数商小于等于零,所以求模时取整数商中较小的一个,取余时整数商中较大的一个,如果不能整除,取模与取余的结果不同,模的符号与b相同,而余数的符号会与b相同。
  接下来,我们来看一个求模在C++数据类型转换中的应用:
  当我们赋给无符号类型一个超出它表示范围的值时,结果是初始值对无符号类型表示数值总数取模。那么:8 比特大小的 unsigned char 可以表示 0 至 255 区间内的值,如果我们赋了一个区间以外的值,例如 -1 ,则实际结果时对 256 取模,即 255 。

[C++]求模与求余运算相关推荐

  1. matlab 求余集,求模和求余 - moziqi - OSCHINA - 中文开源技术交流社区

    一直以为求模和求余是一回事,发现这两者是不同的.以下为网上转载的资料: 通常情况下取模运算(mod)和求余(rem)运算被混为一谈,因为在大多数的编程语言里,都用'%'符号表示取模或者求余运算.在这里 ...

  2. 实数范围内(包含负数)的求模与求余运算异同

    以下内容主要总结整理自以下文献: 一.实数的取余运算 二.取模和取余的区别 三.负数.取模与取余 背景 最近在一道 Java 习题中,看到这样的一道题: What is the output when ...

  3. 三角函数 求模 和 求角度算法

    #include <stdio.h> //x y 为Q8格式 //返回模长 角度 由最后两个变量返回指针值 int my_atan5(int x, int y,int * AP,int * ...

  4. python中的除法,取整和求模

    本文为转载,原博客地址:https://blog.csdn.net/huzq1976/article/details/51581330 首先注明:如果没有特别说明,以下内容都是基于python 3.4 ...

  5. python中的除法、取整和求模_python中的除法,取整和求模

    首先注明:如果没有特别说明,以下内容都是基于python 3.4的. 先说核心要点: 1. /是精确除法,//是向下取整除法,%是求模 2. %求模是基于向下取整除法规则的 3. 四舍五入取整roun ...

  6. python中的除法、取整和求模_python中的除法,取整和求模-Go语言中文社区

    首先注明:如果没有特别说明,以下内容都是基于python 3.4的. 先说核心要点: 1. /是精确除法,//是向下取整除法,%是求模 2. %求模是基于向下取整除法规则的 3. 四舍五入取整roun ...

  7. python中的取余运算符是_python取余运算

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python中对负数求余的计算方法和求幂运算注意点python中对负数求余的计算 ...

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

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

  9. python 除数总是提示为0_python负数求余不正确?——取模 VS 取余

    前天小王同学正在leetcode兴致勃勃的刷题,用java写了一版后又习惯性的用python写了一版,代码逻辑完全一样,但提交答案后居然提示[解答错误]! 经过反复调试,发现问题出在涉及求余的地方,p ...

  10. c语言float可以 取余吗,C语言fmod()函数:对浮点数取模(求余)

    头文件:#include fmod() 用来对浮点数进行取模(求余),其原型为: double fmod (double x); 设返回值为 ret,那么 x = n * y + ret,其中 n 是 ...

最新文章

  1. bzoj千题计划128:bzoj4552: [Tjoi2016Heoi2016]排序
  2. Java栈和局部变量操作(二)
  3. 一些实用的Javascript代码
  4. Linux入门学习(四)
  5. Hexo Reload in new Mac
  6. 首发天玑1200!Redmi电竞旗舰首曝:电池容量或超4500mAh
  7. 概率论与数理统计(二)选择题
  8. 武汉群硕面试心得体会(上)
  9. Ubuntu Linux下安装MySQL
  10. 向日葵如何远程桌面Linux,最快的远程桌面向日葵软件
  11. QQ,MSN,旺旺在线客服代码
  12. php运行日志在哪里看,thinkphp错误日志在哪
  13. switch错误码2016-0247 无法识别SD卡解决方案(猴子也能看懂的简单命令行操作,无需格式化!)
  14. word输入公式快捷键
  15. 几何平均数和调和平均数是什么?有什么作用?详细资料讨论
  16. R3Det: Refined Single-Stage Detector with Feature Refinementfor Rotating Object论文学习
  17. 2020-10-17
  18. 歌谣:2022年年终总结
  19. 酒庄页面HTML5,这5家酒庄的“跨界+体验”玩法,让全世界印象深刻
  20. VScode远程连接服务器解决办法

热门文章

  1. 经典的进程同步问题-----哲学家进餐问题详解
  2. c语言precede函数怎么构造,数据结构——栈的应用(表达式求值)(C语言)
  3. 【新手指南】App原型设计:如何快速实现这6种交互效果?
  4. 如何使用C4D的反射通道创建一个金属外观?
  5. 短信api的接口平台有哪些可以免费试用
  6. python和r语言生物信息学_R语言和Python哪个适合生物信息学?
  7. 小白理解transformer解析博客
  8. 手动从0搭建ABP框架-ABP官方完整解决方案和手动搭建简化解决方案实践
  9. vue面试题自我介绍
  10. [ARM-assembly]-ARMV8-A64指令编码介绍