2013-05-01 56 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的結果將是 「一個」

相關問題