为啥 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

为啥 http 上传时没有创建 //Windows/Temp 临时文件?

求教thinkphp设置伪静态 为啥总是通不过

httpd-2.4.18 mod_http2 适用于 curl 和 nghttp 但不适用于浏览器