回答:
つまり:
27 / 16 = 1, remainder 11
=> 27 mod 16 = 11
その他の例:
30 / 3 = 10, remainder 0
=> 30 mod 3 = 0
35 / 3 = 11, remainder 2
=> 35 mod 3 = 2
ほとんどの説明では1つの重要なステップが欠落しています。別の例を使用してギャップを埋めましょう。
次の場合:
Dividend: 16
Divisor: 6
モジュラス機能は、次のようになります。
16 % 6 = 4
これがなぜなのかを確認しましょう。
最初に、整数除算を実行します。これは、小数(剰余とも呼ばれます)が破棄されることを除いて、通常の除算と同様です。
16 / 6 = 2
次に、上記の除算の結果()に除数()を掛け2
ます。6
2 * 6 = 12
最後に、上記の乗算の結果()を被除数()から減算12
します。16
16 - 12 = 4
この減算の結果4
、残り、は、上記の係数の結果と同じです!
16 // 6 >>> 2
および16 / 6 >>> 2.6666666666666665
時計の例は、モジュロを理解するのに役立つかもしれません。
モジュラー演算の一般的な使用法は、12時間制での使用で、1日は2つの12時間の期間に分割されます。
今回は15:00とし
ましょう。ただし、午後3時と言うこともできます。
これはまさにmoduloが行うことです:
15 / 12 = 1, remainder 3
この例は、ウィキペディアでよりよく説明されています。ウィキペディアのModulo記事
モジュラスを計算するための簡単な式は次のとおりです。
[Dividend-{(Dividend/Divisor)*Divisor}]
したがって、27%16:-
27- {(27/16)* 16}
27- {1 * 16}
回答= 11
注:
すべての計算は整数を使用します。10進数の商の場合、10進数の後の部分は無視または切り捨てられます。
例:27/16 = 1.6875は、上記の式では1と見なされます。0.6875は無視されます。
コンピューター言語のコンパイラーは、小数部を含む整数を同様に(小数部の後に切り捨てることで)扱います
モジュラス演算子は、除算ステートメントを取り、その計算から残っているもの、いわば「残りの」データ(13/5 = 2など)を返します。つまり、残りの3、またはその計算から残っていることを意味します。どうして?2 * 5 = 10なので、13-10 = 3になります。
係数演算子は、すべての計算を13%5 = 3で実行します。
非常に単純:によるa % b
除算の残りとして定義さa
れb
ます。
その他の例については、ウィキペディアの記事を参照してください。
これらの簡単な手順がお役に立てば幸いです。
20 % 3 = 2
20 / 3 = 6
; 含めないでください.6667
–無視してください3 * 6 = 18
20 - 18 = 2
、これは剰余の剰余です係数の除算はかなり単純です。商ではなく剰余を使用します。
1.0833... <-- Quotient
__
12|13
12
1 <-- Remainder
1.00 <-- Remainder can be used to find decimal values
.96
.040
.036
.0040 <-- remainder of 4 starts repeating here, so the quotient is 1.083333...
13/12 = 1R1、エルゴ13%12 = 1。
モジュラスを「サイクル」と考えると役立ちます。
つまり、式n % 12
の結果は常に <12になります。
それはセットのための配列を意味する0..100
ためn % 12
です。
{0,1,2,3,4,5,6,7,8,9,10,11,0,1,2,3,4,5,6,7,8,9,10,11,0,[...],4}
その観点から、係数とその使用法は、はるかに明確になります。
理解する唯一の重要なことは、モジュラス(ここではCのように%で示される)はユークリッド除算によって定義されることです。
2つの(d, q)
整数の場合、常に次のことが当てはまります。
d = ( d / q ) * q + ( d % q )
ご覧のとおり、の値はの値によってd%q
異なります d/q
。一般に正の整数のためd/q
され、ゼロに向けて切り捨て、例えば5/2のために、したがって、2を与えます。
5 = (5/2)*2 + (5%2) => 5 = 2*2 + (5%2) => 5%2 = 1
ただし、負の整数の場合、状況はそれほど明確ではなく、言語や標準に依存します。たとえば、-5 / 2は-2(以前のようにゼロに切り捨てられます)を返すことができますが、-3(別の言語で)を返すこともできます。
最初のケースでは:
-5 = (-5/2)*2 + (-5%2) => -5 = -2*2 + (-5%2) => -5%2 = -1
しかし2番目のものでは:
-5 = (-5/2)*2 + (-5%2) => -5 = -3*2 + (-5%2) => -5%2 = +1
前に述べたように、ユークリッド除算である不変量を思い出してください。
詳細:
0から始まるテーブルを書き出します。
{0,1,2,3,4}
テーブルを行に続けます。
{0,1,2,3,4}
{5,6,7,8,9}
{10,11,12,13,14}
列1のすべてが5の倍数です。列2のすべてが5の倍数で、余りは1です。ここで抽象的な部分:(1)を1/5または10進展開として書くことができます。モジュラス演算子は列のみを返すか、別の考え方では、長除算の剰余を返します。あなたはmodulo(5)を扱っています。異なるモジュラス、異なるテーブル。ハッシュテーブルについて考えてみましょう。
2つの整数を除算すると、次のような方程式が得られます。
A / B = Q残りR
Aは配当です。Bは除数です。Qは商、Rは剰余
時には、AをBで除算したときの余りだけに関心がある場合があります。これらの場合には、モジュロ演算子(modと省略)と呼ばれる演算子があります。
例
16/5= 3 Remainder 1 i.e 16 Mod 5 is 1.
0/5= 0 Remainder 0 i.e 0 Mod 5 is 0.
-14/5= 3 Remainder 1 i.e. -14 Mod 5 is 1.
詳細については、カーンアカデミーの記事を参照してください。
コンピュータサイエンスでは、ハッシュテーブルはMod演算子を使用して要素を格納します。Aはハッシュ後の値、Bはテーブルサイズ、Rは要素が挿入されるスロットまたはキーの数です。
詳細については、ハッシュテーブルのしくみを参照してください。
これは、モジュラス演算子を理解するための私にとって最良のアプローチでした。例を通して説明します。
16 % 3
この2つの数値を除算すると、余りが結果になります。これが私のやり方です。
16 % 3 = 3 + 3 = 6; 6 + 3 = 9; 9 + 3 = 12; 12 + 3 = 15
16に残っているのは1です
16 % 3 = 1
これがもう1つの例16 % 7 = 7 + 7 = 14
です。16に残っているものは何ですか。です2
16 % 7 = 2
もう1つ: 24 % 6 = 6 + 6 = 12; 12 + 6 = 18; 18 + 6 = 24
。残りはゼロです24 % 6 = 0