モジュラス除算がどのように機能するのかよくわかりません。計算27 % 16
してしまいましたが11
、理由がわかりません。
オンラインで素人の言葉で説明を見つけることができないようです。誰かがここで何が起こっているかについて非常に高いレベルで詳しく説明できますか?
モジュラス除算がどのように機能するのかよくわかりません。計算27 % 16
してしまいましたが11
、理由がわかりません。
オンラインで素人の言葉で説明を見つけることができないようです。誰かがここで何が起こっているかについて非常に高いレベルで詳しく説明できますか?
ほとんどの説明は1つの重要なステップを見逃しています。別の例を使用して、ギャップを埋めましょう。
次の場合:
Dividend: 16
Divisor: 6
モジュラス関数は次のようになります。
16 % 6 = 4
これがなぜであるかを判断しましょう。
まず、整数除算を実行します。これは、小数(剰余)が破棄されることを除いて、通常の除算と同様です。
16 / 6 = 2
次に、上記の除算()の結果に除数()を掛けます。2
6
2 * 6 = 12
最後に、上記の乗算()の結果を被除数()から減算します。12
16
16 - 12 = 4
この減算の結果4
、剰余は、上記のモジュラスの結果と同じです。
弾性率を計算するための簡単な式は次のとおりです:-
[Dividend-{(Dividend/Divisor)*Divisor}]
したがって、27%16:-
27- {(27/16)* 16}
27- {1 * 16}
回答=11
注:
すべての計算は整数を使用します。小数の商の場合、小数の後の部分は無視/切り捨てられます。
例:27/16 = 1.6875は、上記の式では1と見なされます。0.6875は無視されます。
コンピューター言語のコンパイラーは、小数部の整数を同じように扱います(小数の後に切り捨てることによって)。
たぶん、時計の例は、モジュロを理解するのに役立つかもしれません。
モジュラー演算のよく知られた使用法は、1日が2つの12時間周期に分割される12時間制での使用です。
現在、今回は15:00としましょう。ただし、午後3時
と言うこともできます。
これはまさにモジュロが行うことです:
15 / 12 = 1, remainder 3
この例はウィキペディアでよりよく説明されています:ウィキペディアモジュロ記事
モジュラス演算子は除算ステートメントを受け取り、その計算から残っているもの、つまり13/5 = 2などの「残りの」データを返します。つまり、3が残っているか、その計算から残っています。なんで?2 * 5 = 10であるため、13-10=3となります。
モジュラス演算子は、13%5=3のすべての計算を行います。
モジュラス除算は単純にこれです:2つの数値を除算し、余りのみを返します
27/16 = 1、11が残っているため、27%16 = 11
同上43/16=2、11が残っているので43%16 = 11
非常に単純:によるa % b
除算の余りとして定義されます。a
b
その他の例については、ウィキペディアの記事を参照してください。
もう1つ追加したいと思います。
被除数が除数よりも大きい/大きい場合、モジュロを計算するのは簡単です
被除数=5除数=3
5%3 = 2
3)5(1
3
-----
2
しかし、除数が被除数よりも小さい場合はどうなりますか
被除数=3除数=5
3%5 = 3 ?? どうやって
これは、5は3を直接除算できないため、モジュロが配当となるためです。
これらの簡単な手順がお役に立てば幸いです。
20 % 3 = 2
20 / 3 = 6
; 含めないでください.6667
–無視してください3 * 6 = 18
20 - 18 = 2
、これはモジュロの残りです27%16 = 11
あなたはそれをこのように解釈することができます:
16はそれを通過する前に27に1回行きます。
16 * 2=32。
つまり、16は27に1回、残りは11になると言えます。
実際には、
16 + 11 = 27
他の例:
20%3 = 2
さて3はそれを通過する前に20に6回行きます。
3 * 6 = 18
20まで加算するには、2が必要なので、モジュラス式の余りは2です。
小数点以下の数字(0.xxx)が短いと簡単になります。次に、その数に除算後の数を掛けるだけです。
元:32 % 12 = 8
32/12=2.666666667
それからあなたは捨てて、 <-2
に焦点を合わせ0.666666667
0.666666667*12=8
ますそれがあなたの答えです。
(繰り返しますが、小数点以下の数字が短い場合にのみ簡単です)
理解しておくべき唯一の重要なことは、モジュラス(ここでは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
前に述べたように、除法の原理である不変量を覚えておいてください。
詳細:
モジュラス除算は、商ではなく、除算の余りを提供します。
簡単です。モジュラス演算子(%)は、整数除算後に余りを返します。あなたの質問の例を見てみましょう。どのように27%16 = 11?27を16で割ると(27/16)、余りは11になります。そのため、答えは11になります。
あなたが17mod6を持っているとしましょう。
合計6つで17に最も近くなります。これは、12を超えると、17 mod 6の質問よりも多い18になるため、12になります。次に、17から12とマイナスを取ります。あなたの答え、この場合は5。
17 mod 6 = 5
モジュラス除算は非常に簡単です。商の代わりに余りを使用します。
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}
その観点から、モジュラスとその用途がはるかに明確になります。
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または小数展開として書くことができます。剰余演算子は列のみを返します。別の考え方では、余りを筆算で返します。あなたはモジュロ(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