1

とは整数変数(n % m)である式のすべての可能な結果は何ですか?nm

と思っていまし0(m-1)が不明です。

4

3 に答える 3

1

mの整数であると仮定すると、可能な値の範囲は-min(abs(n), m - 1)からmin(abs(n), m - 1)までです。

したがって、nがゼロまたは正で、それより大きい場合m(典型的なケース)、範囲は包括的0になります。m-1

nがゼロまたは負であり、その絶対値が より大きい場合、m範囲は-(m-1)からまでになります0

いずれの場合も、nの絶対値が より低い場合はm、 by によって設定された上限が代わりに によってm-1設定されnます。つまり、nがゼロまたは正で 未満の場合m、範囲は0からnまで (両端を含む) になります。

于 2013-11-07T11:55:55.417 に答える
0

の結果はn % m、]-m、+m[ の範囲になります。

理由: Java でのモジュロ演算子の定義は、次のようなものです。すべての int 値 n および m について、次のことが常に true でなければなりません: (n / m) xm + (n % m) == n

ただし、n が負の場合(n / m) * mは常に n 以上であるn % mため、上記の式を満たすには負でなければなりません。

ルールは次のとおりです。剰余演算の結果 (ゼロでない場合) は常に左オペランドと同じ符号になります。

于 2013-11-07T11:57:44.257 に答える
0

肯定的な n と m の例を見てみましょう。あなたの答えは正しいですが、いくつかのケースがあります...

-1%10=-1
-1%-10=-1
1%-10=1
1%10=1

正の % 正の戻り値0 to m-1

負 % n <= m の場合は `0 の間の負の戻り値、それ以外の場合は 0 から n+1 の間になります

于 2013-11-07T11:58:52.583 に答える