0

私はJavaに不慣れで、実際にはプログラミング全般です。剰余演算子(%)が2つの数値の余りを返すことは理解していますが、17%40=17である理由がわかりません。

40%17 = 6、17%5 = 2、40%5=0であることを理解しています。余りとして返される値の要点を理解しています。しかし、17%40=17は私を困惑させました。

私が考案できる唯一の合理化は、余りが1未満であるため、合計値17が返されるということです。なぜ0ではないのでしょうか。この謎を私に説明するのを手伝ってください。

4

6 に答える 6

15

17/40で割ると、は0になり、余りは17になります。

モジュロ演算子( )は余り%を返します。

すなわち

a % b = remainder of a / b
于 2013-01-23T05:43:27.377 に答える
2

Javaには、よく知らないかもしれない重要な算術演算子が1つあります。これは、剰余演算子または剰余演算子とも呼ばれます。%演算子は、残りの2つの数値を返します。たとえば、10を3で割ると余りが1になるため、10%3は1になります。

したがって、あなたの場合、17/40余りは17のままになるので、結果は17になります。

Likeと同じです。

1%10 = 1
于 2013-01-23T05:46:39.217 に答える
1

KnuthによるWikiの方程式:

ここに画像の説明を入力してください

a = 17
n = 40
floor(a/n) = 0
so r = 17

n > aその時rは単にaです。

于 2013-01-23T05:47:22.307 に答える
1

私は、第 3 と第 4 の標準的な数学を学習することが重要なポイントだと思います。

あなたが見るなら(除算の構文を理解してほしい。それは人気のある3番目の標準的な方法です)

  ____
40)17

17 は 40 で割り切れないため、リマインダー 17 が表示されます。その後、「.」が追加されます。そして、分数が追加されます

于 2013-01-23T05:49:46.390 に答える
1

数値ab、その商qと剰余rがある場合、次が成り立つ必要があります。

q · b + r = a

つまり、商 ( q ) に除数 ( b ) を掛け、剰余 ( r ) を加算すると、結果は被除数 ( a ) になります。

あなたの場合、 a = 17, b = 40, q = 0 なので、r17でなければなりません。

注: 上記の方程式は、Nikolay Kuznetsov の answerからの方程式の再配置にすぎませんが、この方法の方が理解しやすいと思います。

于 2013-01-23T10:03:20.830 に答える
0

たぶん、これはそれについて考えるための別の、より役立つ方法です。

整数aとに除算を適用すると、実際には次のようbに関連付けようとしますab

a = Q * b + R

aは の倍数とb残りの部分です。QおよびRは整数です。これを簡単にするために、負でない数についても考えてみましょう。倍数 ,Qは商でありR、残り , は剰余です。この関係を機能させる最小のものです。

ほとんどの言語で、a / bは を与えQ、 と は をa % b与えますR。(実際、プロセッサは両方を一度に計算する傾向があります。これらは非常に関連しています。)

したがって、a17 でb40 の場合、次のように記述した場合にのみ機能します。

17 = 0 * 40 + 17

a % bこれが17でなければならない理由です。

(負の数を考慮すると、より複雑になることに注意してください。)

于 2013-01-23T10:04:26.507 に答える