Ich verstehe nicht wirklich, wie die Modulteilung funktioniert. Ich habe gerechnet 27 % 16
und bin damit fertig geworden 11
und ich verstehe nicht warum.
Ich kann online keine Erklärung für Laien finden. Kann jemand auf sehr hohem Niveau erläutern, was hier vor sich geht?
Die meisten Erklärungen übersehen einen wichtigen Schritt. Lassen Sie uns die Lücke anhand eines anderen Beispiels füllen.
Angesichts der folgenden:
Die Modulfunktion sieht folgendermaßen aus:
Lassen Sie uns feststellen, warum dies so ist.
Führen Sie zunächst eine Ganzzahldivision durch , die der normalen Division ähnlich ist, mit der Ausnahme, dass eine beliebige Bruchzahl (auch als Rest bezeichnet) verworfen wird:
Dann multiplizieren Sie das Ergebnis der obigen Division (
2
) mit unserem Divisor (6
):Schließlich subtrahiert das Ergebnis der obigen Multiplikation (
12
) von unserer Dividende (16
):Das Ergebnis dieser Subtraktion,
4
der Rest , ist das gleiche Ergebnis unseres Moduls oben!quelle
16 // 6 >>> 2
und16 / 6 >>> 2.6666666666666665
Vielleicht könnte Ihnen das Beispiel mit einer Uhr helfen, das Modulo zu verstehen.
Eine bekannte Verwendung der modularen Arithmetik ist die Verwendung in der 12-Stunden-Uhr, in der der Tag in zwei 12-Stunden-Perioden unterteilt ist.
Nehmen wir an, wir haben derzeit diese Zeit: 15:00 Uhr.
Man könnte aber auch sagen, dass es 15 Uhr ist
Genau das macht Modulo:
Sie finden dieses Beispiel besser erklärt auf Wikipedia: Wikipedia Modulo Article
quelle
Die einfache Formel zur Berechnung des Moduls lautet: -
Also 27% 16: -
27- {(27/16) * 16}
27- {1 * 16}
Antwort = 11
Hinweis :
Alle Berechnungen erfolgen mit ganzen Zahlen. Bei einem Dezimalquotienten ist der Teil nach der Dezimalstelle zu ignorieren / abzuschneiden.
Beispiel: 27/16 = 1,6875 ist in der oben genannten Formel als nur 1 anzunehmen. 0,6875 wird ignoriert.
Compiler von Computersprachen behandeln eine Ganzzahl mit Dezimalteil genauso (durch Abschneiden nach der Dezimalstelle)
quelle
Der Moduloperator nimmt eine Divisionsanweisung und gibt zurück, was von dieser Berechnung übrig bleibt, sozusagen die "verbleibenden" Daten, wie z. B. 13/5 = 2. Das heißt, es sind noch 3 übrig oder von dieser Berechnung übrig. Warum? weil 2 * 5 = 10. Somit ist 13 - 10 = 3.
Der Moduloperator führt die gesamte Berechnung für Sie durch, 13% 5 = 3.
quelle
Die Modulteilung ist einfach so: Teilen Sie zwei Zahlen und geben Sie nur den Rest zurück
27/16 = 1 mit 11 übrig, daher 27% 16 = 11
dito 43/16 = 2 mit 11 übrig, also 43% 16 = 11 auch
quelle
Sehr einfach:
a % b
ist definiert als der Rest der Division vona
durchb
.Weitere Beispiele finden Sie im Wikipedia-Artikel .
quelle
Ich möchte noch etwas hinzufügen:
Es ist einfach, Modulo zu berechnen, wenn die Dividende größer / größer als der Divisor ist
Dividende = 5 Divisor = 3
aber was ist, wenn der Divisor kleiner als die Dividende ist?
Dividende = 3 Divisor = 5
Dies liegt daran, dass Modulo die Dividende ist, da 5 3 nicht direkt teilen kann
quelle
Ich hoffe, diese einfachen Schritte helfen:
20 / 3 = 6
;; Fügen Sie das nicht hinzu.6667
- ignorieren Sie es einfach3 * 6 = 18
20 - 18 = 2
, das ist der Rest des Moduloquelle
Einfacher, wenn Ihre Zahl nach der Dezimalstelle (0.xxx) kurz ist. Dann müssen Sie nur noch diese Zahl mit der Zahl nach der Division multiplizieren.
Ex:
32 % 12 = 8
Sie
32/12=2.666666667
Dann werfen Sie die2
weg, und konzentrieren sich auf die0.666666667
0.666666667*12=8
<- Das ist deine Antwort.(wieder nur einfach, wenn die Zahl nach der Dezimalstelle kurz ist)
quelle
Die Modulteilung gibt Ihnen den Rest einer Teilung und nicht den Quotienten.
quelle
Nehmen wir an, Sie haben 17 Mod 6.
Welche Summe von 6 bringt Sie am nächsten an 17, es wird 12 sein, denn wenn Sie über 12 gehen, haben Sie 18, was mehr ist als die Frage von 17 Mod 6. Sie werden dann 12 und minus von 17 nehmen, was Ihnen geben wird Ihre Antwort, in diesem Fall 5.
17 mod 6 = 5
quelle
Die Modulteilung ist ziemlich einfach. Es wird der Rest anstelle des Quotienten verwendet.
13/12 = 1R1, also 13% 12 = 1.
Es hilft, sich den Modul als "Zyklus" vorzustellen.
Mit anderen Worten, für den Ausdruck
n % 12
ist das Ergebnis immer <12.Das heißt, die Reihenfolge für das Set
0..100
fürn % 12
lautet:In diesem Licht wird der Modul sowie seine Verwendung viel klarer.
quelle
Das einzig Wichtige zu verstehen ist, dass der Modul (hier mit% wie in C bezeichnet) durch die euklidische Division definiert wird .
Für zwei beliebige
(d, q)
ganze Zahlen gilt immer Folgendes :Wie Sie sehen können,
d%q
hängt der Wert von vom Wert von abd/q
. Generell gilt für positive ganze Zahlend/q
wird in Richtung Null abgeschnitten , zum Beispiel 5/2 2 gibt, daher:Bei negativen ganzen Zahlen ist die Situation jedoch weniger klar und hängt von der Sprache und / oder dem Standard ab. Zum Beispiel kann -5/2 -2 zurückgeben (wie zuvor gegen Null abgeschnitten), aber auch -3 zurückgeben (mit einer anderen Sprache).
Im ersten Fall:
aber im zweiten:
Denken Sie, wie gesagt, nur an die Invariante , die die euklidische Division ist .
Weitere Details:
quelle
Sie können es so interpretieren:
16 geht 1 mal in 27, bevor es passiert wird.
Man könnte also sagen, dass 16 einmal in 27 mit einem Rest von 11 geht.
Eigentlich,
Ein anderes Beispiel:
Nun, 3 geht 6 mal in 20, bevor es passiert wird.
Um 20 zu addieren, benötigen wir 2, sodass der Rest des Modulausdrucks 2 ist.
quelle
Es ist einfach, der Moduloperator (%) gibt den Rest nach der Ganzzahldivision zurück. Nehmen wir das Beispiel Ihrer Frage. Wie 27% 16 = 11? Wenn Sie einfach 27 durch 16 teilen, dh (27/16), erhalten Sie den Rest als 11, und deshalb lautet Ihre Antwort 11.
quelle
Schreiben Sie eine Tabelle, die mit 0 beginnt.
Setzen Sie die Tabelle in Zeilen fort.
Alles in Spalte eins ist ein Vielfaches von 5. Alles in Spalte 2 ist ein Vielfaches von 5 mit 1 als Rest. Nun zum abstrakten Teil: Sie können das (1) als 1/5 oder als Dezimalerweiterung schreiben. Der Moduloperator gibt nur die Spalte zurück, oder in einer anderen Denkweise gibt er den Rest bei langer Division zurück. Sie haben es mit Modulo (5) zu tun. Unterschiedlicher Modul, unterschiedliche Tabelle. Denken Sie an eine Hash-Tabelle.
quelle
Wenn wir zwei ganze Zahlen teilen, erhalten wir eine Gleichung, die wie folgt aussieht:
A / B = Q Rest R.
A ist die Dividende; B ist der Teiler; Q ist der Quotient und R ist der Rest
Manchmal interessiert uns nur, was der Rest ist, wenn wir A durch B teilen. In diesen Fällen gibt es einen Operator namens Modulo-Operator (abgekürzt als mod).
Beispiele
Siehe Khan Academy Artikel für weitere Informationen.
In der Informatik verwendet die Hash-Tabelle den Mod-Operator, um das Element zu speichern, wobei A die Werte nach dem Hashing sind, B die Tabellengröße ist und R die Anzahl der Slots oder Schlüssel ist, in die das Element eingefügt wird.
Siehe Wie funktioniert eine Hash - Tabelle Arbeiten für weitere Informationen
quelle
Dies war für mich der beste Ansatz, um den Moduloperator zu verstehen. Ich werde es Ihnen nur anhand von Beispielen erklären.
Wenn Sie diese beiden Zahlen teilen, ist der Rest das Ergebnis. So mache ich das.
Was also 16 übrig bleibt, ist 1
Hier noch ein Beispiel:
16 % 7 = 7 + 7 = 14
Was bleibt 16? Ist2
16 % 7 = 2
Noch eins :
24 % 6 = 6 + 6 = 12; 12 + 6 = 18; 18 + 6 = 24
. Der Rest ist also Null,24 % 6 = 0
quelle