余数运算符 java 除以 1 乘以 x 时



我在堆栈溢出中读到过这个:

模量 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

最新更新