如果这是一个简单的问题我很抱歉,但是当第一个数字小于第二个数字时,我无法理解模数除法的概念。例如,当我的书中1%4表示余数为1.我不明白1是1%4的剩余部分.1 1/4是0.25。我在考虑模数除法错误吗?
答案 0 :(得分:10)
首先,在Java中,%是余数(非模数)运算符,它具有稍微不同的语义。
也就是说,您需要考虑仅整数除法,就好像没有小数值一样。可以将其视为存储无法分割的项目:您可以将大小为4的零项目存储在总容量为1的存储中。存储最大数量的项目后,您的剩余容量为1。同样,13%5是3,因为您可以在13个存储空间中容纳2个大小为5的完整项目,剩余容量为13 - 2*5 = 3
。
答案 1 :(得分:6)
如果将1除以4,则得到0,余数为1.这就是所有模数,即除法后的余数。
答案 2 :(得分:2)
另一种方式将其视为您的数字的表示,以另一个数字的倍数表示。即,a = n*b + r
,其中b>r>=0
。在这个意义上,你的案例给出了1 = 0*4 + 1
。 (编辑:只讨论正数)
答案 3 :(得分:2)
我将为“Jean-Bernard Pellerin”已经说过的内容添加一个更实用的例子。
如果你将1除以4得到0是正确的,但是,为什么当你做1%4时你得到1?
基本上是因为这个:
n = a / b (integer), and
m = a % b = a - ( b * n )
所以,
a b n = a/b b * n m = a%b
1 4 0 0 1
2 4 0 0 2
3 4 0 0 3
4 4 1 0 0
5 4 1 4 1
结论:同时< b,%b的结果将是“a”
答案 4 :(得分:0)
我认为您在%(Remainder)
和/(Division)
运营商之间感到困惑。
当你说%
时,你需要继续除以红利,直到得到余数为0或可能结束。最后得到的是Remainder
。
当你说/
时,你将被除数除以除数为1.你得到的最终产品称为Quotient
答案 5 :(得分:0)
清理事物的另一个不错的方法, 在模数中,如果第一个数是>第二个数字,从第一个数字中减去第二个数字,直到第一个数字小于第二个数字。
17 % 5 = ?
17 - 5 = 12
12 % 5 = ?
12 - 5 = 7
7 % 5 = ?
7 - 5 = 2
2 % 5 = 2
因此,17%5%,12%5%,7%5都给出2的答案。 这是因为2/5 = 0(使用整数时),其余为2。