理解模数运算符%

Pet*_*one 51 modulus

我根据以下表达式理解Modulus运算符:

7 % 5
Run Code Online (Sandbox Code Playgroud)

这将返回2,因为5进入7一次,然后给出剩下的2,但是当您将此语句反转为:

5 % 7
Run Code Online (Sandbox Code Playgroud)

这给了我5的值,让我有点困惑.虽然整个7没有进入5,但它的一部分确实如此,为什么没有剩余或剩余的正面或负面2?

如果基于7根本不进入5的事实来计算5的值,为什么剩余部分不是7而不是5?

在我对模数运算符的理解中,我觉得这里有一些我不知道的东西.

Max*_*amy 92

(此解释仅适用于正数,因为它取决于语言,否则)

定义

是由另外一个号码的欧几里得除法的余数.%被称为模运算.

例如,9除以4等于2但它仍然存在1.在这里,9 / 4 = 29 % 4 = 1.

欧几里德分部

在你的例子中:5除以7得0,但它仍然是5(5 % 7 == 5).

计算

可以使用以下等式计算模运算:

a % b = a - floor(a / b) * b
Run Code Online (Sandbox Code Playgroud)
  • floor(a / b)代表你可以把次数ab
  • floor(a / b) * b 是完全成功分享的金额
  • 总(a)减去共享的数量等于除法的余数

应用于最后一个示例,这给出:

5 % 7 = 5 - floor(5 / 7) * 7 = 5
Run Code Online (Sandbox Code Playgroud)

模数运算

也就是说,你的直觉是它可能是-2而不是5.实际上,在模运算中,-2 = 5 (mod 7)因为它在Z中存在k这样7k - 2 = 5.

您可能没有学过模运算,但您可能已经使用了角度,并且知道-90°与270°相同,因为它是模360.它类似,它包裹!所以拿一个圆圈,并说它的周长是7.然后你读到5是什么.如果你尝试10,它应该是3,因为10 % 7是3.

  • 很好的解释 - +1!但是用这种方式切披萨是 -1k ;) (3认同)
  • 很酷,但是 `%` 不执行模运算,它执行简单的余数,因此应该称为*余数运算符*。 (2认同)

Moh*_*aid 10

对于我来说,这里的一些答案很复杂。我将尝试再添加一个答案,以简化查看方式:

这个过程基本上是问两个问题:

例如7%5

(1)乘以5以获得7的数字是多少?(从0开始)

我们试试吧:

0 所以, 0 x 5 = 0

尽管如此,我们还是很矮,所以我们加一(+1)。

1 所以, 1 x 5 = 5

我们还没有得到7,所以我们加一(+1)。

2 所以, 2 x 5 = 10

现在我们超出了7。因此,这2是不正确的,让我们回到第一步(我们使用过的位置1)的值,结果是5

(2)要得到7,我们需要加多少到5?

显然数字是2 7-5 = 2

7 % 5 = 2;
Run Code Online (Sandbox Code Playgroud)

例如5%7

1-我们要乘以7以获得5的数字是多少?

我们试试吧:

0 所以, 0 x 7 = 0

我们还没有得到5,让我们尝试更大的数字。

1 所以, 1 x 7 = 7

哦,不,我们超出了范围5,让我们回到上一步使用0并得到结果0

2- 0为了达到左侧数字的值,我们需要加多少(我们刚从步骤1得到的数字)5

显然数字是5。 5-0 = 5

   5 % 7 = 5
Run Code Online (Sandbox Code Playgroud)

希望能有所帮助。


Dea*_*Sha 8

正如其他人所指出的,模数是基于余数系统的.

我认为考虑模数的一种更简单的方法是将股息(要分割的数字)完全除以除数后剩下的.因此,如果我们考虑5%7,当你将5除以7时,7可以进入5只0次,当你从5减去0(7*0)时(就像我们在小学时学到的那样),那么其余的将是5(国防部).请参见下图.

   0
  ______
7) 5    
__-0____
   5
Run Code Online (Sandbox Code Playgroud)

使用相同的逻辑,-5 mod 7将为-5(只有0 7可以进入-5和-5-0*7 = -5).使用相同的标记-5 mod -7也将是-5.一些有趣的案例:

5 mod(-3)= 2即5 - ( - 3*-1)

(-5)mod(-3)= -2即-5 - ( - 3*1)= -5 + 3


小智 5

这只是关于剩余部分。让我来告诉你怎么做

10 % 5=0
9 % 5=4 (because the remainder of 9 when divided by 5 is 4)
8 % 5=3
7 % 5=2
6 % 5=1

5 % 5=0 (because it is fully divisible by 5)
Run Code Online (Sandbox Code Playgroud)

现在我们应该记住一件事,mod意味着余数所以

4 % 5=4
Run Code Online (Sandbox Code Playgroud)

但为什么是 4?因为 5 X 0 = 0 所以 0 是最近的小于 4 的倍数,因此 4-0=4