我根据以下表达式理解模运算符:
7 % 5
这将返回 2,因为 5 进入 7 一次,然后给出剩下的 2,但是当您将这个语句反转为:
5 % 7
这给了我 5 的值,这让我有点困惑。虽然7的整体没有进入5,但它的一部分确实如此,为什么没有余数或正负2的余数?
如果它基于 7 根本不进入 5 的事实计算 5 的值,为什么余数不是 7 而不是 5?
在我对模数运算符的理解中,我觉得这里缺少一些东西。
我根据以下表达式理解模运算符:
7 % 5
这将返回 2,因为 5 进入 7 一次,然后给出剩下的 2,但是当您将这个语句反转为:
5 % 7
这给了我 5 的值,这让我有点困惑。虽然7的整体没有进入5,但它的一部分确实如此,为什么没有余数或正负2的余数?
如果它基于 7 根本不进入 5 的事实计算 5 的值,为什么余数不是 7 而不是 5?
在我对模数运算符的理解中,我觉得这里缺少一些东西。
(此解释仅适用于正数,因为它取决于语言)
定义
模数是一个数除以另一个数的余数。%
称为模运算。
例如,9
除以4
等于2
,但它仍然是1
。在这里,9 / 4 = 2
和9 % 4 = 1
。
在您的示例中: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:
7 % 5 = 2
每个人都应该得到一个披萨片。
将 7 片分成 5 个人,每个5
人都会得到一个披萨片,我们最终会得到2
切片(剩余的)。7 % 5
等于是2
因为7
大于 5
。
示例 2:
5 % 7 = 5
每个人应该得到一个披萨片
它给出了5
因为5
小于 7
。因此,根据定义,您不能将整个5
项目划分7
为人。因此,除法根本不会发生,您最终得到的金额与您开始时的金额相同5
。
这个过程基本上是问两个问题:
示例 A:(7 % 5)
(Q.1) 乘以 5 得到 7 的数是多少?
Two Conditions: Multiplier starts from `0`. Output result should not exceed `7`.
我们试试看:
乘数为零0
,所以,0 x 5 = 0
尽管如此,我们还是很短,所以我们将乘数加一 (+1)。
1
所以,1 x 5 = 5
我们还没有得到 7,所以我们加了一个(+1)。
2
所以,2 x 5 = 10
现在我们超过了7
。所以2
不是正确的乘数。让我们返回一步(我们使用 的地方1
)并记住结果是5
。数字5
是这里的关键。
(Q.2)我们需要在5
(我们刚刚从步骤 1 中得到的数字)上加多少才能得到7
?
我们减去这两个数字:7-5 = 2
。
所以答案是: 7 % 5
是2
;
示例 B:(5 % 7)
1- 我们用什么数乘以 7 得到 5?
Two Conditions: Multiplier starts from `0`. Output result and should not exceed `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
希望有帮助。
正如其他人指出的那样,模数是基于余数系统的。
我认为考虑模数的一种更简单的方法是在被除数(被除数)完全除以除数之后剩下的内容。所以如果我们考虑 5%7,当你将 5 除以 7 时,7 只能变成 0 次,当你从 5 中减去 0 (7*0) 时(就像我们在小学学到的那样),那么余数将是 5(mod)。请参见下图。
0
______
7) 5
__-0____
5
使用相同的逻辑,-5 mod 7 将是 -5(只有 0 个 7s 可以进入 -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
这只是关于剩余部分。让我告诉你怎么做
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
模数是余数系统。
所以 7% 5 = 2。
5 % 7 = 5
3 % 7 = 3
2 % 7 = 2
1 % 7 = 1
在函数内部使用时确定数组索引。编程安全吗?那是一个不同的问题。我猜。
第 1 步:5/7 = 0.71
第二步:取小数的左边,所以我们从0.71中取0乘以7 0*7 = 0;
步骤#:5-0 = 5;因此 , 5%7 =5
下面给出了一种找出余数的新方法
声明:余数总是不变的
ex : 26 divided by 7 gives R : 5
这可以通过找到更接近除数的完全除以 26 的数并取两者的差来很容易地找到
13 是 7 之后完全除以 26 的下一个数字,因为在 7 之后是 8、9、10、11、12,其中没有一个完全除以 26,余数为 0。
所以 13 是最接近 7 的数,除以余数 0。
现在取差值 (13 ~ 7) = 5,即 tmainder。
注意:为此,除数应简化为最简单的形式,例如:如果 14 是除数,则必须选择 7 以找到最接近的除数除数。
模数运算符为您提供“减少残留系统”的结果。例如,对于mod 5,计算了 5 个整数:0,1,2,3,4。事实上19=12=5=-2=-9 (mod 7)。答案的主要区别是编程语言通过“减少残留系统”给出的。
让我们这样说吧:
实际上Modulus 运算符执行相同的除法,但它不关心答案,它确实关心提醒,例如,如果你将 7 划分为 5,
那么,让我带你看一个简单的例子:
想想 5是一个块,那么例如我们将在 15 中拥有 3 个块(WITH Nothing Left),但是当该 loginc 出现这种数字 {1,3,5,7,9,11,...} 时,这里是模数出现的地方,所以采用我之前所说的逻辑并将其应用于 7 ,所以答案将是我们在 7 中有 1 个 5 块 => 手上有 2 个提醒!那是模数!!!
但你问的是 5% 7 ,对吧?
所以按照我说的逻辑,我们有多少个 7 块 5 ???? 0
所以模数返回0...
就是这样...
正如您所说, % 符号用于取模(除法余数)。
在w3schools 的 JavaScript 算术页面中,我们可以在剩余部分阅读我认为很好的解释
在算术中,两个整数相除产生一个商和一个 余数。
在数学中,模运算的结果是算术除法的 余数。
因此,在您的特定情况下,当您尝试将 7 根香蕉分成一组 5 根香蕉时,您可以创建 1 组 5 根(商),然后剩下 2 根香蕉(余数)。
如果将 5 根香蕉分成 7 根一组,您将无法这样做,因此您再次剩下 5 根香蕉(剩余部分)。