模数除法是如何工作的

120

我不太明白模除是如何工作的。 我在计算 27 % 16 的时候得到了 11,但我不理解其中的原因。

我在网上找不到通俗易懂的解释。 能否有人简要解释一下这里发生了什么?

19个回答

181

我将用另一个例子来填补大多数解释中缺少的重要步骤。

假设有以下内容:

Dividend: 16
Divisor: 6

"

模运算函数长这样:

"
16 % 6 = 4

让我们确定为什么会这样。

首先,执行整数除法,它类似于普通除法,只是任何小数(也就是余数)都被舍去:

16 / 6 = 2

然后,将上述除法的结果(2)与我们的被除数(6)进行乘法
2 * 6 = 12

最后,从我们的被除数(16)中减去上述乘法的结果(12):
16 - 12 = 4

这个减法的结果是4,即余数,与我们之前的模运算得到的结果相同!

1
如何从16/6中得到2而不是2.6666666667?你是否应该总是忽略0,...?为什么? - Luc
4
如Luc、As Leo和ytpillai所提到的,我们正在使用“整数”除法(即在除法运算后丢弃结果的小数部分)。在Python 3中:16 // 6 >>> 216 / 6 >>> 2.6666666666666665 - bryik

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

77
请不要误解我的意思,但是对于那些对模数除法一无所知的人来说,你的例子并没有解释清楚任何问题。你遗漏了非常重要的步骤,这些步骤解释了余数的来源。Marcin M.下面的答案更好地解释了这个过程。请考虑在将来的回答中更加详细,以便于我们这些可能完全不理解一个概念的人。感谢您成为社区的贡献者!像您这样的人帮助了我,也继续在我的教育之旅中帮助我 :) - Soundfx4
1
维基百科不管,模数和余数并不是同一回事。有些语言只有其中之一,有些则两者都有,还有一些则未定义。 - user207421

34

计算模数的简单公式为:

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

那么,27 % 16 :-

27- {(27/16)*16}

27-{1*16}

答案= 11

注意:

所有计算都是整数计算。如果有小数商,小数部分应该被忽略/截断。

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

计算机语言的编译器也同样按照这种方式处理带有小数部分的整数(即截断小数部分)


30

或许一个关于时钟的例子可以帮助您理解模数。

模算术的一个常见用途是在12小时制钟表中使用,其中一天被划分为两个12小时时间段。

假设我们当前的时间是:15:00
但您也可以说它是下午3点

这正是模数所做的:

15 / 12 = 1, remainder 3

你可以在维基百科上找到更好的解释:维基百科模数文章


15

模数运算符接受一个除法语句并返回该计算中“剩余”的数据,例如13 / 5 = 2。这意味着有3剩余或留下来的结果。为什么?因为2 * 5 = 10,所以13 - 10 = 3。

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


我认为这个答案从概念上讲解得最好。其他答案从数学上解释也是必要的,但这更有助于我理解如何应用模运算符。 - JonnyB

8

模数除法简单来说就是:两个数相除,只返回余数。

27 ÷ 16 = 商1余11,因此 27 % 16 = 11

同样地,43 ÷ 16 = 商2余11,所以 43 % 16 = 11


6
非常简单: a % b 被定义为 a 除以 b 的余数。
更多示例请参见维基百科文章

5

我还想补充一点:

当被除数大于除数时,取模运算很容易计算。

例如:

被除数为5,除数为3

5 % 3 = 2

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

但如果除数比被除数小怎么办

被除数 = 3 除数 = 5

3 % 5 = 3 ?? 怎么回事

这是因为,由于5不能直接整除3,所以模运算的结果就是被除数本身


4
我希望以下简单步骤能够帮到您:

步骤如下:

20 % 3 = 2 
  1. 20 / 3 = 6; 不要包含 .6667 - 忽略它即可
  2. 3 * 6 = 18
  3. 20 - 18 = 2,这是模数的余数

你能否把这个答案格式化得更好一些? - Code Maverick
请查看 Code Jammer 的答案。 - Ajmal Salim

4

27 % 16 = 11

你可以这样理解:

16 可以整除27一次,余数是11。

16 * 2 = 32.

所以我们可以说,在27中,16可以整除一次,余数是11。

事实上,

16 + 11 = 27

另一个例子:

20 % 3 = 2

3 可以整除20六次,余数是2。

3 * 6 = 18

为了加起来等于20,需要2,因此模运算的余数是2。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接