当第一个数小于第二个数时,模数除法

时间:2013-05-01 01:52:14

标签: java modulo integer-division arithmetic-expressions

如果这是一个简单的问题我很抱歉,但是当第一个数字小于第二个数字时,我无法理解模数除法的概念。例如,当我的书中1%4表示余数为1.我不明白1是1%4的剩余部分.1 1/4是0.25。我在考虑模数除法错误吗?

6 个答案:

答案 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。