理解模数运算符%

时间:2013-07-08 10:45:21

标签: modulus

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

7 % 5

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

5 % 7

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

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

在我对模数运算符的理解中,我觉得我在这里缺少一些东西。

11 个答案:

答案 0 :(得分:68)

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

<强>定义

模数是一个数字与另一个数字的欧氏分裂的剩余部分。 %称为模运算

例如,9除以4等于2,但它仍为1。在此处9 / 4 = 29 % 4 = 1

Euclidean Division

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

<强>计算

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

a % b = a - floor(a / b) * b
  • floor(a / b)代表a除以b
  • 的次数
  • floor(a / b) * b是完全成功分享的金额
  • 总共(a)减去所分享的数量等于除法的剩余部分

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

5 % 7 = 5 - floor(5 / 7) * 7 = 5

模块化算术

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

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

答案 1 :(得分:6)

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

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

   0
  ______
7) 5    
__-0____
   5

使用相同的逻辑,-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

答案 2 :(得分:4)

模数是剩余系统。

所以7%5 = 2。

5%7 = 5

3%7 = 3

2%7 = 2

1%7 = 1

在函数内部使用时确定数组索引。这是安全的编程吗?这是一个不同的问题。我猜。

答案 3 :(得分:4)

这里有些答案让我难以理解。我将尝试再添加一个答案,以简化查看方式:

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

例如7%5

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

让我们尝试一下:

00 x 5 = 0

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

11 x 5 = 5

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

22 x 5 = 10

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

(2)我们需要加多少才能得到7?

很明显,这个数字是5。7-5 = 2

7 % 5 = 2;

例如5%7

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

让我们尝试一下:

00 x 7 = 0

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

11 x 7 = 7

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

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

很明显,这个数字是5。5-0 = 5

   5 % 7 = 5

答案 4 :(得分:2)

步骤1:5/7 = 0.71

步骤2:取小数的左侧,因此我们从0.71取0并乘以7            0 * 7 = 0;

步骤#:5-0 = 5;因此,5/7 = 5

答案 5 :(得分:1)

这只是剩下的人。让我告诉你如何

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)

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

4 % 5=4

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

答案 6 :(得分:0)

模数运算符为您提供“减少残留系统”的结果。例如, mod 5 有5个整数:0,1,2,3,4。实际上 19 = 12 = 5 = -2 = -9(mod 7)。编程语言通过“减少残留系统”给出了答案的主要区别。

答案 7 :(得分:0)

下面给出了一种找出余数的新方法

陈述:余数总是不变的

ex : 26 divided by 7 gives R : 5 

通过找到完全划分26的数字可以很容易地发现这更接近于 除数和两者的区别

13 is the next number after 7 that completely divides 26 because after 7 comes 8, 9 ,

10, 11, 12 where none of them divides 26 completely and give remainder 0.
So 13 is the closest number to 7 which divides to give Remainder 0.
now take the difference (13 ~ 7) = 5 which is the Remainder .

note : for this to work divisor should be reduced to its simplest form ex: if 14 
is the divisor ..7 has to be chosen to find the closest number dividing the dividend.

答案 8 :(得分:0)

让我们这样说:
实际上模数运算符执行相同的除法,但它并不关心答案,例如,如果将7除以5,则要注意提醒
所以,让我带你讲一个简单的例子:
认为5是一个块,然后例如我们将在15中有3个块(没有剩下),但是当这个loginc来到这个数字时{1,3,5,7,9, 11,...},这里是模数出来的地方,所以采取我之前说过的逻辑并将其应用于7,所以答案是我们在7 = 7中有1个5的块。我手里拿着2个提醒!那是模数!!!
但你问的是5%7,对吧?
那么按照我所说的逻辑,我们在5个中有多少7个块?的 0
因此模数返回0 ...
就是这样......

答案 9 :(得分:0)

答案 10 :(得分:0)

正如您所说,%符号用于获取模数(除法余数)。

w3schools' JavaScript Arithmetic page中,我们可以在“剩余部分”中阅读我认为是很好的解释

在算术中,两个整数的除法产生一个和一个 剩余

在数学中,取模运算的结果是 算术除法的余数

因此,在您的特定情况下,当您尝试将7个香蕉分成5个香蕉组时,您可以创建1组5个香蕉(商),然后剩下2个香蕉(余数)。

如果将5根香蕉分成7组,您将无能为力,因此又剩下5根香蕉(剩余)。