151

我不好意思问这么简单的问题。我的学期还有两个星期才开始,所以我不能问教授,悬念会杀了我。

为什么 2 mod 4 = 2?

4

20 回答 20

160

Mod只是意味着您在执行除法后取余数。由于 4 进入 2 零次,因此您最终得到 2 的余数。

于 2009-08-29T17:17:30.907 回答
98

是余数,而不是除法。

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
于 2009-08-29T17:17:23.230 回答
19

模 (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)
于 2009-08-29T17:16:51.797 回答
15

如果你使用香蕉和一群人会容易得多。

假设您有 1 根香蕉和 6 人一组,您会表示: 1 mod 6// 1 % 61 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 66 人分享 12 根香蕉,每人有 2 根香蕉,其余为 0。

于 2014-04-24T20:21:04.960 回答
8

2 / 4 = 0,余数为 2

于 2009-08-29T17:17:45.040 回答
8

就在几分钟前,我也对此感到困惑。然后我在一张纸上进行了长手除法,这是有道理的:

  • 4 进入 2 零次。
  • 4乘以0就是0。
  • 你把那个零放在2下面,减去剩下的2。

这就是计算机要解决这个问题的程度。计算机停在那里并返回 2,这是有道理的,因为这就是 "%" (mod) 所要求的。

我们已经接受过输入小数并继续前进的培训,这就是为什么一开始这可能违反直觉。

于 2014-06-16T08:39:17.200 回答
7

有人联系我,让我在问题的评论中更详细地解释我的答案。所以这是我回复那个人的内容,以防它可以帮助其他人:

模运算为您提供欧几里得除法的其余部分(仅适用于整数,不适用于实数)。如果您有 A 使得 A = B * C + D(其中 D < B),则 A 除以 B 的欧几里得除法的商为 C,余数为 D。如果您将 2 除以 4,则商为0,余数为 2。

假设您有 A 对象(您无法剪切)。你想将同样数量的这些物品分发给 B 个人。只要你有超过 B 个对象,你就给它们每个 1,然后重复。当您剩下的对象少于 B 个时,您会停下来并保留剩余的对象。您重复该操作的次数,我们称之为数字 C,就是商。最后保留的对象数量,我们称之为 D,是余数。

如果你有 2 个对象和 4 个人。您已经拥有少于 4 个对象。所以每个人得到 0 个对象,你保留 2 个。

这就是为什么 2 模 4 是 2。

于 2013-08-30T13:04:23.633 回答
5

模运算符计算两个整数操作数相除的余数。这里有一些例子:

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)
于 2013-10-10T19:53:10.510 回答
4

mod 表示除以时的提醒。所以 2 除以 4 是 0,剩下 2。因此 2 mod 4 是 2。

于 2009-08-29T17:17:14.387 回答
4

模是数学除法表达式的余数,表示为整数。

因此,假设您在屏幕上的位置 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
于 2017-01-03T17:25:53.650 回答
2

当您将 2 除以 4 时,您得到 0,剩下或剩余 2。模就是除数后的余数。

于 2012-03-26T22:42:19.883 回答
1

我认为您对如何读取模方程感到困惑。

当我们写一个除法方程时,例如2/4我们将 2 除以 4。

当编写模方程时,例如2 % 4我们正在除2 by 4(认为 2 比 4)并返回余数。

于 2014-01-24T20:17:33.870 回答
1

MOD 是余数运算符。这就是为什么 2 mod 4 给出 2 作为余数。4*0=0,然后 2-0=2。为了更清楚,尝试对 6 mod 4 或 8 mod 3 做同样的事情。

于 2014-04-08T17:23:03.687 回答
1

这就是欧几里得算法。

例如

a mod b = k * b + c => a mod b = c,其中 k 是整数,c 是答案

4 模 2 = 2 * 2 + 0 => 4 模 2 = 0

27 模 5 = 5 * 5 + 2 => 27 模 5 = 2

所以你的答案是

2 模 4 = 0 * 4 + 2 => 2 模 4 = 2

于 2014-12-12T16:31:10.817 回答
1

为了:

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

希望对你有帮助 :)

于 2017-01-14T18:44:23.257 回答
1

Mod操作与提醒一起使用。

这称为模运算。

 a==b(mod m) 
 then m|(a-b)
 a-b=km 
 a=b+km
 So, 2=2+0*4
于 2017-07-15T11:11:18.910 回答
1

要回答模数x % y,您需要问两个问题:

A- 有多少次y没有x余数?对于 2%4,这是 0。

B-你需要加多少才能从那个回来x?要从 0 回到 2,您需要 2-0,即 2。

这些可以总结为一个问题,如下所示:您需要在除以的整数结果中添加多少x才能y返回x

整数是指只有整数,而不是任何感兴趣的分数。

小数除法余数(例如 .283849)对模数不感兴趣,因为模数只处理整数。

于 2018-10-06T21:54:52.927 回答
0

为了直观地考虑它,请想象一个钟面,在您的特定示例中,它仅变为 4 而不是 12。如果您从时钟上的 4 开始(就像从零开始)并顺时针旋转它2 个“小时”,你降落在 2 上,就像顺时针绕它转 6 个“小时”一样,你也会降落在 2 上(6 mod 4 == 2 就像 2 mod 4 == 2)。

于 2009-08-29T17:27:29.903 回答
0

这可能是提及 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")
于 2018-11-12T18:27:23.343 回答
0

我的方法是,2%4 可以解释为小于或等于 2 的 4 的最大因数,即 0,因此 2(来自 2%4 的左操作数)减去(-) 0 是 2

于 2021-10-27T08:32:05.763 回答