为啥 2 mod 4 = 2?
Posted
技术标签:
【中文标题】为啥 2 mod 4 = 2?【英文标题】:Why does 2 mod 4 = 2?为什么 2 mod 4 = 2? 【发布时间】:2010-11-24 00:40:25 【问题描述】:我不好意思问这么简单的问题。我的学期还有两个星期才开始,所以我不能问教授,悬念会杀了我。
为什么 2 mod 4 = 2?
【问题讨论】:
因为2 = 0 * 4 + 2
.
en.wikipedia.org/wiki/Modulo_operator
在 x/y 结果中由整数部分和小数部分组成。如果将小数部分乘以除数,则得到余数。并且 x = 整数部分y + 余数(即分数部分y)。在这种情况下,整数部分为 0,余数为 2。
很高兴你有勇气问这个问题。
模远远等于除两个数。
【参考方案1】:
Modulo (mod, %) 是余数运算符。
2%2 = 0 (2/2 = 1 remainder 0)
1%2 = 1 (1/2 = 0 remainder 1)
4%2 = 0 (4/2 = 2 remainder 0)
5%2 = 1 (5/2 = 2 remainder 1)
【讨论】:
和“冗长”的解释:2 = 4·0 + 2 ;-)【参考方案2】:mod 表示除以时的提醒。所以 2 除以 4 是 0,剩下 2。因此 2 mod 4 是 2。
【讨论】:
【参考方案3】:Modulo 是余数,不是除法。
2 / 4 = 0R2
2 % 4 = 2
符号%
通常用于模运算符,代替单词mod
。
对于x % 4
,你会得到下表(1-10)
x x%4
------
1 1
2 2
3 3
4 0
5 1
6 2
7 3
8 0
9 1
10 2
【讨论】:
【参考方案4】:Mod 只是意味着您在执行除法后取余数。由于 4 等于 2 的 0 次,所以你最终得到 2 的余数。
【讨论】:
【参考方案5】:2 / 4 = 0,余数为 2
【讨论】:
【参考方案6】:为了以直观的方式思考它,请想象一个钟面,在您的特定示例中,它仅变为 4 而不是 12。如果您从时钟 4 开始(就像从零开始)并四处走动它顺时针旋转 2 个“小时”,你降落在 2 上,就像顺时针绕它旋转 6 个“小时”也会降落在 2 上(6 mod 4 == 2 就像 2 mod 4 == 2)。
【讨论】:
这实际上很令人困惑。 @do3boy:钟面的想法是一种非常简单易行的方法来准确描述模数的事实。除了使用 24 小时格式来解释它而不是修改可用位置的数量会更容易。【参考方案7】:当您将 2 除以 4 时,您会得到 0,剩下或剩余 2。模就是除数后的余数。
【讨论】:
【参考方案8】:有人联系我,让我在问题的评论中更详细地解释我的答案。所以这是我给那个人的回复,以防它可以帮助其他人:
模运算为您提供欧几里得除法的余数 (仅适用于整数,不适用于实数)。如果你有这样的 即 A = B * C + D(其中 D
假设您有 A 对象(您无法剪切)。你想 将相同数量的这些物品分发给 B 个人。只要 你有超过 B 个对象,你给每个对象 1,然后重复。 当您剩下少于 B 个对象时,您会停下来并保留剩余的 对象。你重复操作的次数,让我们 称那个数字C,是商。您保留的对象数量 最后,我们称它为 D,是余数。
如果你有 2 个对象和 4 个人。你已经有少于 4 个 对象。所以每个人得到 0 个对象,你保留 2 个。
这就是为什么 2 模 4 是 2。
【讨论】:
【参考方案9】:模运算符计算两个整数操作数相除的余数。以下是几个例子:
23 % 10 evaluates to 3 (because 23/10 is 2 with a remainder of 3)
50 % 50 evaluates to 0 (50/50 is 1 with a remainder of 0)
9 % 100 evaluates to 9 (9/100 is 0 with a remainder of 9)
【讨论】:
【参考方案10】:我认为您对如何读取模方程感到困惑。
当我们编写一个除法方程时,例如2/4
,我们是在将 2 除以 4。
当写一个模方程时,例如2 % 4
,我们将除以2 by 4
(认为 2 比 4)并返回余数。
【讨论】:
【参考方案11】:MOD 是余数运算符。这就是为什么 2 mod 4 给出 2 作为余数。 4*0=0,然后 2-0=2。为了更清楚,请尝试对 6 mod 4 或 8 mod 3 执行相同操作。
【讨论】:
【参考方案12】:如果你使用香蕉和一群人会容易得多。
假设您有 1 个香蕉和 6 人一组,您可以表示:1 mod 6
/ 1 % 6
/ 1 modulo 6
。
您需要 6 根香蕉才能让小组中的每个人吃饱并快乐。
所以如果你有 1 根香蕉,需要与 6 个人分享,但你只能分享每个小组成员有 1 根香蕉,即 6 人,那么你将有 1 根香蕉(剩余,不分享组中的任何人),2根香蕉也是如此。然后你将有 2 个香蕉作为剩余部分(没有共享)。
但是当你得到 6 根香蕉时,你应该很高兴,因为 6 人一组的每个成员都有 1 根香蕉,当你将 6 根香蕉全部分享给 6 个人时,剩下的为 0 根或没有香蕉。
现在,对于 7 根香蕉和 6 个人一组,您将拥有 7 mod 6 = 1
,这是因为您给了 6 个人每人 1 根香蕉,剩下的 1 根香蕉。
12 mod 6
或 6 人共享 12 根香蕉,每人有 2 根香蕉,余数为 0。
【讨论】:
【参考方案13】:就在几分钟前,我也对此感到困惑。然后我在一张纸上进行了长手除法,这很有意义:
4 进入 2 个零次。 4乘以0就是0。 你把那个零放在 2 的下面,然后减去剩下的 2。这就是计算机要解决这个问题的程度。计算机停在那里并返回 2,这是有道理的,因为这就是 "%" (mod) 所要求的。
我们接受过输入小数并继续前进的训练,这就是为什么一开始这可能违反直觉。
【讨论】:
【参考方案14】:这是欧几里得算法。
例如
a mod b = k * b + c => a mod b = c,其中k是整数,c是答案
4 mod 2 = 2 * 2 + 0 => 4 mod 2 = 0
27 模 5 = 5 * 5 + 2 => 27 模 5 = 2
所以你的答案是
2 mod 4 = 0 * 4 + 2 => 2 mod 4 = 2
【讨论】:
【参考方案15】:模是数学除法表达式的余数,以整数表示。
因此,假设您在屏幕上的位置 90 处有一个像素,屏幕为 100 像素宽并加上 20,它将环绕到位置 10。为什么...因为 90 + 20 = 110 因此 110 % 100 = 10。
为了我的理解,我认为模是小数的整数表示。此外,如果您向后执行表达式并将余数处理为小数,然后添加到除数,它将给出您的原始答案。
例子:
100
(A) --- = 14 mod 2
7
123
(B) --- = 8 mod 3
15
3
(C) --- = 0 mod 3
4
逆向设计为:
2 14(7) 2 98 2 100
(A) 14 mod 2 = 14 + --- = ----- + --- = --- + --- = ---
7 7 7 7 7 7
3 8(15) 3 120 3 123
(B) 8 mod 3 = 8 + --- = ----- + --- = --- + --- = ---
15 15 15 15 15 15
3 3
(B) 0 mod 3 = 0 + --- = ---
4 4
【讨论】:
【参考方案16】:为:
2 mod 4
我们可以使用我经过思考后想出的这个小公式,也许它已经在我不知道的某个地方定义但对我有用,它真的很有用。
A mod B = C
其中 C 是答案
K * B - A = |C|
其中 K 是 B 适合 A 的次数
2 mod 4
将是:
0 * 4 - 2 = |C|
C = |-2| => 2
希望它对你有用:)
【讨论】:
【参考方案17】:Mod 操作与提醒一起使用。
这称为模运算。
a==b(mod m)
then m|(a-b)
a-b=km
a=b+km
So, 2=2+0*4
【讨论】:
【参考方案18】:要回答模数 x % y
,您需要问两个问题:
A- 多少次y
进入x
没有余数? 2%4 为 0。
B- 你需要添加多少才能从那个返回到 x
?要从 0 回到 2,您需要 2-0,即 2。
这些可以总结为一个问题,如下所示:
您需要将x
除以y
的整数结果加上多少才能返回x
?
整数表示只有整数,而不是任何感兴趣的分数。
小数除法余数(例如 .283849)对模数不感兴趣,因为模数只处理整数。
【讨论】:
【参考方案19】:这可能是提及 modr() 函数的好时机。它返回一个除法的全部和其余部分。
print("\n 17 // 3 =",17//3," # Does the same thing as int(17/3)")
print(" 17 % 3 =",17%3," # Modulo division gives the remainder.")
whole, remain = divmod(17,3)
print(" divmod(17,3) returns ->",divmod(17,3),end="")
print(" because 3 goes into 17,",whole,"times with a remainder of",remain,end=".\n\n")
【讨论】:
【参考方案20】:我的方法是,2%4 可以解释为小于或等于 2 的 4 的最大因数,即 0,因此 2(来自 2%4 的左操作数)减去(-) 0 是 2
【讨论】:
以上是关于为啥 2 mod 4 = 2?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 ( x & 3 ) 与 ( x mod 4 ) 相同?
为啥 Ubuntu 14.04 上的 mod_jk 无法连接到 tomcat
Apache 2.4.29 和 mod_jk 1.2.42 不转发到 tomcat