116

我真的不明白模数除法是如何工作的。我在计算27 % 16和结束,11我不明白为什么。

我似乎无法在网上找到通俗的解释。有人可以详细说明这里发生了什么吗?

4

19 回答 19

169

大多数解释都遗漏了一个重要步骤,让我们用另一个例子来填补空白。

鉴于以下情况:

Dividend: 16
Divisor: 6

模数函数如下所示:

16 % 6 = 4

让我们确定这是为什么。

首先,执行整数除法,这与普通除法类似,除了丢弃任何小数(也称为余数):

16 / 6 = 2

然后,将上述除法 ( ) 的结果与我们的除数( )相乘26

2 * 6 = 12

最后,从我们的被除数( ) 中减去上述乘法 ( ) 的结果:1216

16 - 12 = 4

这个减法的结果,4,与我们上面的模数的结果相同!

于 2012-12-04T19:37:33.263 回答
115

模除法的结果是给定数字的整数除法的余数。

这意味着:

27 / 16 = 1, remainder 11
=> 27 mod 16 = 11

其他示例:

30 / 3 = 10, remainder 0
=> 30 mod 3 = 0

35 / 3 = 11, remainder 2
=> 35 mod 3 = 2
于 2010-04-18T22:45:28.413 回答
33

计算模数的简单公式是:-

[Dividend-{(Dividend/Divisor)*Divisor}]

所以,27 % 16 :-

27- {(27/16)*16}

27-{1*16}

答案= 11

注意

所有计算均使用整数。在小数商的情况下,小数点后的部分将被忽略/截断。

例如:27/16= 1.6875 在上述公式中仅取为 1。0.6875 被忽略。

计算机语言的编译器也以相同的方式处理带有小数部分的整数(通过截断小数点后)

于 2013-06-11T22:06:28.820 回答
30

也许带有时钟的示例可以帮助您理解模数。

模算术的常见用法是它在 12 小时制中的使用,其中一天分为两个 12 小时时段。

假设我们目前有这个时间: 15: 00
但你也可以说是下午 3 点

这正是模的作用:

15 / 12 = 1, remainder 3

你会发现这个例子在维基百科上得到了更好的解释:维基百科模数文章

于 2010-04-18T22:50:53.407 回答
15

模运算符采用除法语句并返回该计算剩下的任何内容,即“剩余”数据,可以说,例如 13 / 5 = 2。这意味着,还有 3 剩余,或从该计算中剩余。为什么?因为 2 * 5 = 10。因此,13 - 10 = 3。

模数运算符为您完成所有计算,13 % 5 = 3。

于 2013-01-19T21:30:19.177 回答
7

模除法就是这样:将两个数相除,只返回余数

27 / 16 = 1,剩下 11,因此 27 % 16 = 11

同上 43 / 16 = 2 剩下 11 所以 43 % 16 = 11

于 2010-04-18T22:46:02.500 回答
6

很简单:a % b定义为除以除的余ab

有关更多示例,请参阅维基百科文章

于 2010-04-18T22:46:05.837 回答
5

我想再补充一件事:

当被除数大于/大于除数时,很容易计算模数

被除数 = 5 除数 = 3

5 % 3 = 2

3)5(1
  3
-----
  2

但是如果除数小于被除数怎么办

被除数 = 3 除数 = 5

3 % 5 = 3 ?? 如何

这是因为,因为 5 不能直接除以 3,所以取模就是被除数

于 2017-08-11T21:41:57.360 回答
3

我希望这些简单的步骤会有所帮助:

20 % 3 = 2 
  1. 20 / 3 = 6; 不包括.6667- 忽略它
  2. 3 * 6 = 18
  3. 20 - 18 = 2,这是模的余数
于 2014-04-08T16:14:46.250 回答
3

27 % 16 = 11

你可以这样解释:

16 在通过它之前进入 27 的 1 次。

16 * 2 = 32。

因此,您可以说 16 在 27 中出现一次,其余为 11。

实际上,

16 + 11 = 27

另一个例子:

20 % 3 = 2

Well 3 在通过之前进入 20 的 6 次。

3 * 6 = 18

加起来是 20,我们需要 2,所以模数表达式的余数是 2。

于 2019-12-12T03:25:02.487 回答
2

当小数点后的数字 (0.xxx) 很短时会更容易。然后你需要做的就是将该数字乘以除法后的数字。

前任:32 % 12 = 8

你做32/12=2.666666667 然后你扔掉2,专注于0.666666667 0.666666667*12=8<-- 这就是你的答案。

(同样,只有小数点后的数字很短时才容易)

于 2014-01-07T20:03:10.540 回答
2

唯一需要理解的是模数(这里用 C 中的 % 表示)是通过欧几里得除法定义的。

对于任何两个(d, q)整数,以下始终为真

d = ( d / q ) * q + ( d % q )

如您所见, 的值d%q 取决于 的值 d/q。通常对于正整数d/q截断为零,例如 5/2 给出 2,因此:

5 = (5/2)*2 + (5%2) => 5 = 2*2 + (5%2) => 5%2 = 1

然而,对于负整数,情况不太清楚,取决于语言和/或标准。例如 -5/2 可以返回 -2(像以前一样向零截断)但也可以返回 -3(使用另一种语言)。

在第一种情况下:

-5 = (-5/2)*2 + (-5%2) => -5 = -2*2 + (-5%2) => -5%2 = -1

但在第二个中:

-5 = (-5/2)*2 + (-5%2) => -5 = -3*2 + (-5%2) => -5%2 = +1

如前所述,只需记住不变量,即欧几里得除法

更多详细信息:

于 2019-05-18T17:09:24.527 回答
1

假设你有 17 mod 6。

总共 6 将使您最接近 17,它将是 12,因为如果您超过 12,您将有 18,这比 17 mod 6 的问题更多。然后,您将从 17 中减去 12,这将给您你的答案,在这种情况下是 5。

17 模 6=5

于 2013-06-18T20:36:28.490 回答
1

很简单,Modulus operator(%) 返回整数除法后的余数。让我们以你的问题为例。27% 16 = 11 怎么算?当您简单地将 27 除以 16 即 (27/16) 时,余数为 11,这就是您的答案为 11 的原因。

于 2013-03-11T14:35:17.883 回答
1

模除法为您提供除法的余数,而不是商。

于 2010-04-18T22:50:44.390 回答
1

模除法非常简单。它使用余数而不是商。

    1.0833... <-- Quotient
   __
12|13
   12
    1 <-- Remainder
    1.00 <-- Remainder can be used to find decimal values
     .96
     .040
     .036
     .0040 <-- remainder of 4 starts repeating here, so the quotient is 1.083333...

13/12 = 1R1,因此 13%12 = 1。


将模数视为一个“循环”会有所帮助。

换句话说,对于表达式n % 12,结果将始终< 12。

这意味着集合的顺序0..100n % 12

{0,1,2,3,4,5,6,7,8,9,10,11,0,1,2,3,4,5,6,7,8,9,10,11,0,[...],4}

有鉴于此,模数及其用途变得更加清晰。

于 2014-08-21T18:45:29.453 回答
0

写出一个从 0 开始的表格。

{0,1,2,3,4}

按行继续表格。

{0,1,2,3,4}
{5,6,7,8,9}
{10,11,12,13,14}

第一列中的所有内容都是 5 的倍数。第二列中的所有内容都是 5 的倍数,余数为 1。现在是抽象部分:您可以将 (1) 写为 1/5 或十进制扩展。模运算符仅返回列,或者以另一种思维方式,它返回长除法的余数。您正在处理模(5)。不同的模数,不同的表。想想哈希表。

于 2015-03-30T00:58:47.587 回答
0

当我们将两个整数相除时,我们将得到一个如下所示的等式:

A/B​​​=Q余数R

A是股息;B 是除数;Q 是商,R 是余数

有时,我们只对 A 除以 B 时的余数感兴趣。对于这些情况,有一个称为模运算符(缩写为 mod)的运算符。

例子

16/5= 3 Remainder 1  i.e  16 Mod 5 is 1.
0/5= 0 Remainder 0 i.e 0 Mod 5 is 0.
-14/5= 3 Remainder 1 i.e. -14 Mod 5 is 1.

有关更多信息,请参阅可汗学院文章

在计算机科学中,哈希表使用 Mod 运算符来存储元素,其中 A 是散列后的值,B 是表的大小,R 是插入元素的槽数或键数。

有关详细信息,请参阅哈希表的工作原理

于 2016-03-03T09:38:14.400 回答
-1

这是我理解模数运算符的最佳方法。我将通过示例向您解释。

16 % 3

当您将这两个数字相除时,余数就是结果。这就是我的做法。

16 % 3 = 3 + 3 = 6; 6 + 3 = 9; 9 + 3 = 12; 12 + 3 = 15

所以剩下的16是1

16 % 3 = 1

这里还有一个例子:16 % 7 = 7 + 7 = 1416 还剩下什么?是2 16 % 7 = 2

还有一个: 24 % 6 = 6 + 6 = 12; 12 + 6 = 18; 18 + 6 = 24。所以余数为零,24 % 6 = 0

于 2016-04-17T17:06:34.430 回答