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

Remainder operator java when dividing 1 by x

我在 Whosebug 上读到了这个:

模数 50 % 100

这样想:

100 变成 50 多少次?

零次。所以一定还剩下50个。因此,答案是50。

这对我来说是 understand/calculate 模数的最简单方法。但是,当我对 1 % 3 采用相同的方法时,出现了问题。 3进1多少次?零,所以一定还剩下 3 个?不,实际上它是 1,但为什么呢?这也是 2 % 11 的情况,可能还有许多其他情况,这是关于什么的?

除法算法:

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

3 进入 1 零次,剩下 1。不是 3.

注意 Java 中没有取模运算符。它被指定为余数运算符。这在某些情况下会影响结果的含义和值。