Modulus Divison如何运作

NSW*_*WOA 97 language-agnostic math division modulo

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

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

小智 149

大多数解释都错过了一个重要的步骤,让我们用另一个例子填补空白.

鉴于以下内容:

Dividend: 16
Divisor: 6
Run Code Online (Sandbox Code Playgroud)

模函数如下:

16 % 6 = 4
Run Code Online (Sandbox Code Playgroud)

我们来确定这是为什么.

首先,执行整数除法,类似于正常除法,除了丢弃任何小数(又称余数):

16 / 6 = 2
Run Code Online (Sandbox Code Playgroud)

然后,上面的division(2)的结果与我们的divisor(6)相乘:

2 * 6 = 12
Run Code Online (Sandbox Code Playgroud)

最后,从我们的dividend()中减去上面乘法(12)的结果:16

16 - 12 = 4
Run Code Online (Sandbox Code Playgroud)

这个减法的结果4,即余数,与上述模数的结果相同!

  • @Luc正如Leo和ytpillai所提到的,我们使用的是**整数**除法(其中分割后的结果的小数部分被丢弃).在Python 3中:`16 // 6 >>> 2`和`16/6 >>> 2.6666666666666665` (2认同)

Leo*_*Leo 103

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

这意味着:

27 / 16 = 1, remainder 11
=> 27 mod 16 = 11
Run Code Online (Sandbox Code Playgroud)

其他例子:

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

35 / 3 = 11, remainder 2
=> 35 mod 3 = 2
Run Code Online (Sandbox Code Playgroud)

  • 请不要以错误的方式采取这种做法,但是你的例子并没有为那些完全不知道模仿分区发生了什么的人清除任何事情.你遗漏了非常重要的步骤来解释其余部分的来源.Marcin M.在下面的回答更好地解释了这个过程.对于我们这些可能根本没有掌握概念的人来说,请考虑更详细.感谢您成为社区的贡献成员!像你这样的人帮助我,继续帮助我完成我的教育之旅:) (64认同)

Pri*_*ine 30

也许带时钟的例子可以帮助你理解模数.

熟悉的模数运算是在12小时制中使用,其中一天分为两个12小时.

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

这正是模数所做的:

15 / 12 = 1, remainder 3
Run Code Online (Sandbox Code Playgroud)

您可以在维基百科上找到更好的解释这个例子:Wikipedia Modulo Article


Cod*_*mer 29

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

[Dividend-{(Dividend/Divisor)*Divisor}]
Run Code Online (Sandbox Code Playgroud)

那么,27%16: -

27- {(27/16)*16}

27- {1*16}

答案= 11

注意:

所有计算都是整数.如果是小数,则忽略/截断小数点后的部分.

例如:27/16 = 1.6875在上述公式中仅为1.0.6875被忽略.

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


Reb*_*nix 15

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

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


chr*_*ris 7

模数除法就是这样:除以两个数并仅返回余数

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

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


Yuv*_*dam 6

很简单:a % b定义为aby 的除法的余数b.

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


bn0*_*00d 5

我还想补充一件事:

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

红利 = 5 除数 = 3

5 % 3 = 2

3)5(1
  3
-----
  2
Run Code Online (Sandbox Code Playgroud)

但是如果除数小于股息怎么办

红利 = 3 除数 = 5

3 % 5 = 3 ?? 如何

这是因为,既然 5 不能直接整除 3,那么模就是被除数