模数除法是如何工作的

120

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

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

19个回答

3

如果小数点后的数字很短(0.xxx),计算就更容易了。你只需要用这个数字乘以除法后面的数字即可。

例如:32 % 12 = 8

你先做除法:32/12=2.666666667 然后把整数部分2忽略,专注于小数部分0.666666667 0.666666667*12=8 <-- 这就是你的答案。

(注意,只有当小数部分很短才容易计算)


2

理解的唯一重要事项是,模运算(在此表示为%,类似于C语言)是通过欧几里得除法定义的。

对于任何两个整数(d,q),以下内容始终成立

最初的回答:

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

正如你所看到的,d%q的值取决于d/q的值。通常情况下,对于正整数,d/q向零截断的,例如5/2得到2,因此:

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

是一个在数学和编程中广泛使用的公式,用于计算模运算。

最初的回答:

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

请记住之前所说的不变量,即欧几里得除法更多细节: 最初的回答

1
在分页方面出奇地有用。 - Bob Jordan

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。

这意味着n % 12在集合0..100中的序列为:

{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}

在这种情况下,模数及其用途变得更加清晰。

1

模数除法给出的是除法的余数,而不是商。


1

很简单,模运算符(%)返回整数除法后的余数。让我们以您的问题为例。如何计算27%16 = 11?当您将27除以16即(27/16)时,您得到的余数是11,这就是为什么您的答案是11。


1

假设你有17 mod 6。

那么,哪个6的总数最接近17呢?答案是12,因为如果你超过12,那么你将得到18,这比17 mod 6 的问题更多。然后,你将从17中减去12,得到答案,即5。

17 mod 6 = 5


0

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

{0,1,2,3,4}

在行中继续填写表格。

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

第一列中的所有内容都是5的倍数。第二列中的所有内容都是以1为余数的5的倍数。现在来看抽象部分:你可以将(1)写成1/5或十进制扩展形式。模运算符仅返回列,或者换句话说,它返回长除法的余数。你正在处理模(5)。不同的模,不同的表格。想想哈希表。

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 是插入元素的插槽数或键。

有关更多信息,请参见哈希表如何工作


-1

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

16 % 3

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

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

所以16除以1的余数是1

16 % 3 = 1

这里再举一个例子:16 % 7 = 7 + 7 = 14,16 剩下了什么?是 2,即 16 % 7 = 2

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


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