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

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

首先,在Java中,%是余数(不是模数)运算符,它具有稍微不同的语义。 也就是说,您需要考虑仅整数除法,就好像没有小数值一样。 可以将其视为存储无法分割的项目:您可以将大小为4的零项目存储在总容量为1的存储中。 存储最大数量的项目后,您的剩余容量为1。 类似地,13%5是3,因为你可以在尺寸为13的存储器中装入2个尺寸为5的完整物品,剩余容量为13 - 2*5 = 3

如果将1除以4,则得到0,余数为1.这就是所有模数,即除法后的余数。

另一种方式将其视为您的数字的表示,以另一个数字的倍数表示。 即, a = n*b + r ,其中b>r>=0 。 在这个意义上,你的情况给出1 = 0*4 + 1 。 (编辑:只讨论正数)

我将为“Jean-Bernard Pellerin”已经说过的内容添加一个更实用的例子。

如果你将1除以4得到0是正确的,但是,为什么当你做1%4时你得到1?

基本上是因为这个:

 n = a / b (integer), and m = a % b = a - ( b * n ) 

所以,

  abn = a/bb * nm = 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 

结论 :当a

我认为你在%(Remainder)/(Division)运算符之间感到困惑。

当你说% ,你需要继续除以红利,直到得到余数为0或可能结束。 而你最终得到的就是Remainder

当你说/ ,你除以红利,直到除数变为1.你得到的最终产品叫做Quotient

清除事物的另一个好方法是In模数,如果第一个数字是>第二个数字,则从第一个数字中减去第二个数字,直到第一个数字小于第二个数字。

 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。

    Interesting Posts