2013-05-01 58 views
10

如果这是一个简单的问题,我很抱歉,但在第一个数字小于第二个数字时,我很难理解模数除法的概念。例如,当我的书1%4说剩下的是1时,我不明白1是1的余数是多少。4是0.25。我是否错误地思考模分裂?第一个数字小于第二个数字时的模量除法

回答

10

首先,在Java中,%是余数(不是模)运算符,它具有略微不同的语义。这就是说,你需要考虑整数除法,就好像没有小数值一样。把它看作是不能分割的存储项目:你可以将零个大小为4的项目存储在总容量为1的存储中。存储最大数量的项目后,您的剩余容量为一个。同样,13%5为3,因为您可以在尺寸为13的存储区中容纳2个大小为5的完整项目,其余容量为13 - 2*5 = 3

+0

我明白余数的时候第一个数字大于第二个数字。所以我得到13%5是3。我不明白的是如果5%13时答案会是什么。 – 2013-05-01 01:58:58

+0

如果您的物品比您的容量大,则永远无法将其放入您的存储空间。因此,结果始终是您的总体容量,但仍未使用(即第一个数字 - 您可能意思是'5%13') – misberner 2013-05-01 02:00:20

+0

是的,我的意思是5%13而不是相反。所以如果我得到你所说的答案5%13是5?那是对的吗? – 2013-05-01 02:02:59

4

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

+0

什么如果是40%会发生160 – 2014-11-29 09:13:55

+0

@yanivx同样的事情,0余数40,所以答案是40 – 2014-12-01 19:41:36

2

另一种方式可以把它看作是以另一个数字的倍数表示你的数字。 I.e,a = n*b + r,其中b>r>=0。从这个意义上说,你的情况给出1 = 0*4 + 1。 (编辑:只谈正数)

0

我想你在%(Remainder)/(Division)运营商之间感到困惑。

当你说%,你需要继续分红,直到你得到剩余0或可能结束。最后你得到的是Remainder

当你说/,需要将分红,直到除数变为1和最终产品你叫Quotient

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作为剩余部分。

0

我将为“让 - 伯纳德佩莱林”已经说过的内容添加一个更实际的例子。

这是正确的,如果你除以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,A%B的结果将是 “一个”

相关问题