Answers:
这意味着:
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
大多数解释都错过了重要的一步,让我们用另一个例子填补这一空白。
给定以下内容:
Dividend: 16
Divisor: 6
该模函数如下:
16 % 6 = 4
让我们确定为什么会这样。
首先,执行整数除法,该运算与普通除法类似,只是舍弃任何小数(也称为余数):
16 / 6 = 2
然后,将上述除法(2
)的结果与除数(6
)相乘:
2 * 6 = 12
最后,从我们的红利()中减去上述乘法(12
)的结果:16
16 - 12 = 4
这个减法的结果,4
中,其余部分,是我们的结果相同模数以上!
16 // 6 >>> 2
和16 / 6 >>> 2.6666666666666665
也许带有时钟的示例可以帮助您理解模数。
模块化算术的一种常见用法是在12小时制时钟中使用,其中将一天分为两个12小时制。
可以说我们目前有这个时间:15 : 00
但您也可以说现在是下午3点
这正是模的作用:
15 / 12 = 1, remainder 3
您会在Wikipedia上更好地解释此示例:Wikipedia Modulo文章
计算模量的简单公式是:
[Dividend-{(Dividend/Divisor)*Divisor}]
因此,27%16:-
27- {(27/16)* 16}
27- {1 * 16}
答案= 11
注意事项:
所有计算均使用整数。如果是小数位商,则小数点后的部分将被忽略/截断。
例如:27/16 = 1.6875在上述公式中仅取1。0.6875被忽略。
计算机语言的编译器也以相同的方式(通过在小数点后截断)来处理带小数部分的整数
模运算符采用一个除法语句,并返回该计算中剩下的任何东西,可以说是“剩余”数据,例如13/5 =2。这意味着该计算中还有3个剩余或剩余。为什么?因为2 * 5 =10。因此,13-10 = 3。
模运算符为您完成所有这些计算,即13%5 = 3。
很简单:a % b
被定义为的除法的余数a
通过b
。
有关更多示例,请参见Wikipedia文章。
我希望这些简单的步骤会有所帮助:
20 % 3 = 2
20 / 3 = 6
; 不包括.6667
–忽略它3 * 6 = 18
20 - 18 = 2
,这是模的余数模数除法非常简单。它使用余数而不是商。
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..100
的n % 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}
因此,模量及其用途变得更加清晰。
唯一要了解的是模数(此处用%表示,类似于C)是通过欧几里得除法定义的。
对于任何两个(d, q)
整数,始终为true:
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
如前所述,只需记住不变式,即欧几里得除法。
更多详细信息:
很简单,Modulus运算符(%)在整数除后返回余数。让我们以您的问题为例。27%16 = 11 当您简单地将27除以16即(27/16)时,剩下的就是11,这就是为什么答案是11的原因。
当我们将两个整数相除时,我们将得到一个如下所示的方程:
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是插入元素的插槽或键的数量。
有关更多信息,请参见哈希表如何工作。