我不太明白模除是如何工作的。
我在计算 27 % 16
的时候得到了 11
,但我不理解其中的原因。
我在网上找不到通俗易懂的解释。 能否有人简要解释一下这里发生了什么?
我不太明白模除是如何工作的。
我在计算 27 % 16
的时候得到了 11
,但我不理解其中的原因。
我在网上找不到通俗易懂的解释。 能否有人简要解释一下这里发生了什么?
我将用另一个例子来填补大多数解释中缺少的重要步骤。
假设有以下内容:
Dividend: 16
Divisor: 6
模运算函数长这样:
"16 % 6 = 4
让我们确定为什么会这样。
首先,执行整数除法,它类似于普通除法,只是任何小数(也就是余数)都被舍去:
16 / 6 = 2
2
)与我们的被除数(6
)进行乘法:2 * 6 = 12
16
)中减去上述乘法的结果(12
):16 - 12 = 4
4
,即余数,与我们之前的模运算得到的结果相同!计算模数的简单公式为:
[Dividend-{(Dividend/Divisor)*Divisor}]
那么,27 % 16 :-
27- {(27/16)*16}
27-{1*16}
答案= 11
注意:
所有计算都是整数计算。如果有小数商,小数部分应该被忽略/截断。
例如:27/16= 1.6875 在上述公式中应该取为1。0.6875 应该被忽略。
计算机语言的编译器也同样按照这种方式处理带有小数部分的整数(即截断小数部分)
或许一个关于时钟的例子可以帮助您理解模数。
模算术的一个常见用途是在12小时制钟表中使用,其中一天被划分为两个12小时时间段。
假设我们当前的时间是:15:00
但您也可以说它是下午3点
这正是模数所做的:
15 / 12 = 1, remainder 3
你可以在维基百科上找到更好的解释:维基百科模数文章
模数运算符接受一个除法语句并返回该计算中“剩余”的数据,例如13 / 5 = 2。这意味着有3剩余或留下来的结果。为什么?因为2 * 5 = 10,所以13 - 10 = 3。
模数运算符会为您完成所有这些计算,13 % 5 = 3。
模数除法简单来说就是:两个数相除,只返回余数。
27 ÷ 16 = 商1余11,因此 27 % 16 = 11
同样地,43 ÷ 16 = 商2余11,所以 43 % 16 = 11
我还想补充一点:
当被除数大于除数时,取模运算很容易计算。
例如:
被除数为5,除数为3
5 % 3 = 2
3)5(1
3
-----
2
但如果除数比被除数小怎么办
被除数 = 3 除数 = 5
3 % 5 = 3 ?? 怎么回事
这是因为,由于5不能直接整除3,所以模运算的结果就是被除数本身
步骤如下:
20 % 3 = 2
20 / 3 = 6
; 不要包含 .6667
- 忽略它即可3 * 6 = 18
20 - 18 = 2
,这是模数的余数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。
16 // 6 >>> 2
和16 / 6 >>> 2.6666666666666665
。 - bryik