私はJavaに不慣れで、実際にはプログラミング全般です。剰余演算子(%)が2つの数値の余りを返すことは理解していますが、17%40=17である理由がわかりません。
40%17 = 6、17%5 = 2、40%5=0であることを理解しています。余りとして返される値の要点を理解しています。しかし、17%40=17は私を困惑させました。
私が考案できる唯一の合理化は、余りが1未満であるため、合計値17が返されるということです。なぜ0ではないのでしょうか。この謎を私に説明するのを手伝ってください。
17/40で割ると、商は0になり、余りは17になります。
モジュロ演算子( )は余り%
を返します。
すなわち
a % b = remainder of a / b
Javaには、よく知らないかもしれない重要な算術演算子が1つあります。これは、剰余演算子または剰余演算子とも呼ばれます。%演算子は、残りの2つの数値を返します。たとえば、10を3で割ると余りが1になるため、10%3は1になります。
したがって、あなたの場合、17/40
余りは17のままになるので、結果は17になります。
Likeと同じです。
1%10 = 1
私は、第 3 と第 4 の標準的な数学を学習することが重要なポイントだと思います。
あなたが見るなら(除算の構文を理解してほしい。それは人気のある3番目の標準的な方法です)
____
40)17
17 は 40 で割り切れないため、リマインダー 17 が表示されます。その後、「.」が追加されます。そして、分数が追加されます
数値aとb、その商qと剰余rがある場合、次が成り立つ必要があります。
q · b + r = a
つまり、商 ( q ) に除数 ( b ) を掛け、剰余 ( r ) を加算すると、結果は被除数 ( a ) になります。
あなたの場合、 a = 17, b = 40, q = 0 なので、rは17でなければなりません。
注: 上記の方程式は、Nikolay Kuznetsov の answerからの方程式の再配置にすぎませんが、この方法の方が理解しやすいと思います。
たぶん、これはそれについて考えるための別の、より役立つ方法です。
整数a
とに除算を適用すると、実際には次のようb
に関連付けようとしますa
。b
a = Q * b + R
a
は の倍数とb
残りの部分です。Q
およびR
は整数です。これを簡単にするために、負でない数についても考えてみましょう。倍数 ,Q
は商でありR
、残り , は剰余です。この関係を機能させる最小のものです。
ほとんどの言語で、a / b
は を与えQ
、 と は をa % b
与えますR
。(実際、プロセッサは両方を一度に計算する傾向があります。これらは非常に関連しています。)
したがって、a
17 でb
40 の場合、次のように記述した場合にのみ機能します。
17 = 0 * 40 + 17
a % b
これが17でなければならない理由です。
(負の数を考慮すると、より複雑になることに注意してください。)