“求余”和“取模”的区别

如题所述

第1个回答  2022-06-18
昨天在与同班学员的讨论中,对Java中的“%”符号到底是“求余”还是“取模”产生了疑问。通过百度发现这两种运算确实很像,在概念上有很多重复部分,而主要区别在于对负整数进行除法运算时操作不同。

下面进行举例说明:

对整型变量a、b来说,求余运算和取模运算的公式都是:

1.求整数商:c=a/b;

2.计算余数或者模:r=a-c*b。

两种运算在第一步时就产生了不同的结果:求余运算在取c的值时,向0方向舍入;而取模运算在计算c的值时,向负无穷方向舍入。

例如:计算-9 mod 5

设a=-9,b=5

1.求整数商:求余运算得c=-1(向0方向舍入);取模运算得c=-2(向负无穷方向舍入)。

2.计算余数或者模:由于c值不同,求余得r=-4;取模得r=1。

归纳:

a和b符号相同时,求余和取模结果相同;

a和b符号不同时,求余结果的符号和a相同,取模结果的符号和b相同。

另外不同环境下“%”运算符的含义也不同:

1.c/c++、Java为求余

2.Python为取模
相似回答