《C++回顾笔记》取模运算与取余运算


  对于整型数a,b来说,取模运算和取余运算的计算方法是一样的:

  1. 求整数商:c = a/b;
  2. 取余和取模:r = a - c * b;

  取模运算和取余运算的区别在于第一步对计算结果舍入的方式不同:取模运算在计算c的值时,会将结果向负无穷方向舍入,而取余运算在取c的值时,向0方向舍入

例如-1对256取模和取余时:

  1. 求整数商c,取模将结果向负无穷方向舍入得到-1,而取余则将结果向0方向舍入得到0;
  2. 将算出的整数商c代入计算r的公式,得到取模的结果为255,而取余的结果为-1;

  当整数a和b的符号一致时,易知其整数商必大于或者等于0,取模运算和取余运算对其舍入后的结果也一致,所以此时取模运算和取余运算的结果是一样的。

  当整数a和b的符号不一致时,易知其整数商必小于或者等于0,因此可以得到:

r = a + |a| * sign(b) * s

  其中,sign(b)表示b的符号(b大于0时,其为1;小于0时其为-1)。而s表示舍入后整数商对原始商的变化倍数。易知对于取模运算来说,s必大于1,而对于取模运算来说,s必小于1。也就是说,当a和b的符号不一致时,求模运算结果的符号和b一致,而求余运算结果的符号和a一致

  最后,需要注意的是,在不同的语言里,运算符%表示的含义不一致,有的语言认为%表示取模运算(如Python),但在C/C++里,%表示取余运算。


文章作者: RainbowCyan
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 RainbowCyan !
 本篇
《C++回顾笔记》取模运算与取余运算 《C++回顾笔记》取模运算与取余运算
  对于整型数a,b来说,取模运算和取余运算的计算方法是一样的: 求整数商:c = a/b; 取余和取模:r = a - c * b;   取模运算和取余运算的区别在于第一步对计算结果舍入的方式不
下一篇 
漫话帧同步 漫话帧同步
前言  帧同步作为网络游戏经常使用的一种同步方案,网络上介绍帧同步原理和具体实现的技术文章俯拾皆是。因此,本文也不再班门弄斧,而只是将一些写得很好的文章加以归纳整理,并结合自己在实际应用中对帧同步的一些理解对一些观点进行
  目录