我在堆栈溢出中读到过这个:
模量 50 % 100
可以这样想:
100 进入 50 多少次?
零次。所以必须剩下 50 个。因此,答案是50。
对我来说,这是理解/计算模量的最简单方法。但是,当我对 1 % 3 采取相同的方法时,会出现一个问题。3 进 1 多少次?零,所以一定还剩3个吧?不,实际上它是 1,但为什么?这也是 2% 11 的情况,可能还有许多其他情况,这是关于什么的?
3 进入 1 次零次,剩下 1 次。不是3。
注意:Java 中没有模运算符。它被指定为余数运算符。在某些情况下,这会影响结果的含义和值。
除法算法:
r
定义为a % b
。
"如果 a 和 b 是正整数,则存在唯一的整数 q, r 与a = b*q + r 和 0 ≤ r <b.">
1 = 3*0 + 1,所以答案是 1。
(0 ≤ 1 <3(
a % b
视为a / b
或
a % b = a - a / b * b;
1 % 3 = 1 - 1 / 3 * 3;
= 1 - 0 * 3
= 1
当你有 -4 % 3 时,它会变得更有趣
-4 % 3 = -4 - -4 / 3 * 3
= -4 - -3
= -1