2013-05-01 3 views
10

これは簡単な質問ですが謝罪しますが、最初の数字が2番目の数字より小さいときはモジュラス除算の概念を掴むのが難しいです。例えば、1%4私の本は残りが1であると言います。私は1が1%の残りの部分をどのようにしているのか分かりません。
1/4は0.25です。モジュラスの分割について間違って考えていますか?最初の数字が2番目の数字より小さいときのモジュラス除算

答えて

10

まず、Javaでは、%はわずかに異なるセマンティクスを持つ剰余(モジュロではない)演算子です。つまり、分数値がないかのように、整数のみの除算について考える必要があります。それは、分割できないアイテムを格納するものと考えてください。サイズ4のゼロアイテムを全体容量1のストレージに格納することができます。最大数のアイテムを保管した後の残りの容量は1です。同様に、サイズ13のストレージにサイズ5の完全な2つのアイテムを収めることができるので、13%5は3です。残りの容量は13 - 2*5 = 3です。

+0

残りは分かります最初の数字は2番目の数字よりも大きい。だから私は13%5が3であることを知っている。私が理解していないのは、答えが5%のときの答えだろう。 –

+0

あなたのアイテムがあなたの容量よりも大きい場合は、それをあなたのストレージに入れることはできません。したがって、あなたの全体的な容量は常に未使用のままです(つまり、最初の数 - おそらく '5%13'を意味しました)。 – misberner

+0

はい、私は5%13を意味し、それ以外の方法はありませんでした。だから私があなたが言っていることを得るなら、5%13への答えは5ですか?あれは正しいですか? –

4

1を4で割ると、1の剰余で0が得られます。これはすべての係数であり、除算後の剰余です。

+0

になりますどのような40%であれば160% –

+0

ヤニックスと同じもの、0残量40ですので、返答は40 –

2

別の数字の倍数であなたの数字を表現する別の方法です。すなわち、a = n*b + rb>r>=0。この意味であなたのケースは1 = 0*4 + 1です。

0

私はあなたが%(Remainder)/(Division)オペレータの間で混乱していると思います。

%と言うとき、残りの0または可能な終了が得られるまで、配当を分割し続ける必要があります。あなたが最後に手に入れたのはRemainderです。

あなたが/を言うとき、あなたは除数が1になるまで、配当金を分割し、あなたが得る最終製品は、最初の数字がある場合は、弾性率の を物事をクリアするQuotient

0

別の素敵な法と呼ばれています>第2の数は、第1の数が第2の数よりも小さくなるまで、第1の数から第2の数を引く。

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 の答えを与える。これは、理由は4/10 = 0余りとして2を(整数で作業する場合)。

0

「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の結果は ""