webentwicklung-frage-antwort-db.com.de

Wie funktioniert die Modulabteilung?

Ich verstehe nicht wirklich, wie Modulunterteilung funktioniert. Ich rechnete 27 % 16 und endete mit 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?

94
NSWOA

Das Ergebnis einer Modulo-Division ist der Rest einer Integer-Division der angegebenen Zahlen.

Das bedeutet:

27 / 16 = 1, remainder 11
=> 27 mod 16 = 11

Andere Beispiele:

30 / 3 = 10, remainder 0
=> 30 mod 3 = 0

35 / 3 = 11, remainder 2
=> 35 mod 3 = 2
101
Leo

Die meisten Erklärungen übersehen einen wichtigen Schritt. Lassen Sie uns die Lücke anhand eines anderen Beispiels schließen.

Angesichts der folgenden:

Dividend: 16
Divisor: 6

Die Modulfunktion sieht so aus:

16 % 6 = 4

Lassen Sie uns herausfinden, warum das so ist.

Führen Sie zunächst Ganzzahldivision aus, was der normalen Division ähnelt, mit der Ausnahme, dass eine beliebige gebrochene Zahl (a.k.a. Rest) verworfen wird:

16 / 6 = 2

Dann multiplizieren das Ergebnis der obigen Division (2) mit unserem Teiler (6):

2 * 6 = 12

Schließlich subtrahieren das Ergebnis der obigen Multiplikation (12) aus unserer Dividende (16):

16 - 12 = 4

Das Ergebnis dieser Subtraktion ist 4, der Rest, ist das gleiche Ergebnis wie unser Modul oben!

142
Marcin M. Jessa

Vielleicht kann 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 zur Zeit folgende Zeit: 15:00
Man könnte aber auch sagen, es ist 15 Uhr

Genau das macht modulo:

15 / 12 = 1, remainder 3

Sie finden dieses Beispiel besser erklärt auf Wikipedia: Wikipedia Modulo Article

30
Prine

Die einfache Formel zur Berechnung des Moduls lautet:

[Dividend-{(Dividend/Divisor)*Divisor}]

Also, 27% 16: -

27- {(27/16) * 16}

27- {1 * 16}

Antwort = 11

Anmerkung:

Alle Berechnungen erfolgen mit ganzen Zahlen. Bei einem Dezimalquotienten ist der Teil nach dem Dezimaltrennzeichen zu ignorieren/abzuschneiden.

beispiel: 27/16 = 1,6875 ist in der oben genannten Formel nur als 1 zu verstehen. 0.6875 wird ignoriert.

Compiler von Computersprachen behandeln eine Ganzzahl mit einem Dezimalteil auf die gleiche Weise (durch Abschneiden nach dem Dezimaltrennzeichen) wie .

29
Code_Jamer

Der Moduloperator nimmt eine Divisionsanweisung und gibt sozusagen die "verbleibenden" Daten zurück, die von dieser Berechnung übrig geblieben sind, wie z. Warum? weil 2 * 5 = 10. Somit ist 13 - 10 = 3.

Der Moduloperator führt die gesamte Berechnung für Sie aus, 13% 5 = 3.

15
RebelPhoenix

modul Division ist einfach das: 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

7
chris

Sehr einfach: a % b ist definiert als der Rest der Division von a durch b.

Weitere Beispiele finden Sie im Wikipedia-Artikel .

6
Yuval Adam

Ich hoffe, diese einfachen Schritte werden helfen:

20 % 3 = 2 
  1. 20 / 3 = 6; ohne .6667 - ignoriere es einfach
  2. 3 * 6 = 18
  3. 20 - 18 = 2, was der Rest des Moduls ist
3
mustafe

Ich möchte noch eins hinzufügen:

modulo kann leicht berechnet werden, wenn die Dividende größer/größer als der Divisor ist

dividende = 5 Divisor = 3

5% 3 = 2

3)5(1
  3
-----
  2

aber was ist, wenn der Divisor kleiner als die Dividende ist?

dividende = 3 Divisor = 5

3% 5 = 3 ?? Wie

Dies liegt daran, dass, da 5 3 nicht direkt teilen kann, modulo die Dividende ist

3
bn00d

Einfacher, wenn Ihre Zahl nach dem Komma (0.xxx) kurz ist. Dann müssen Sie nur noch diese Zahl mit der Zahl nach der Division multiplizieren.

Ex: 32 % 12 = 8

Sie machen 32/12=2.666666667 Dann wirfst du den 2 weg, und konzentrieren Sie sich auf die 0.6666666670.666666667*12=8 <- Das ist deine Antwort.

(wieder nur einfach, wenn die Zahl nach dem Komma kurz ist)

1
Gc220

Nehmen wir an, Sie haben 17 Mod 6.

bei einer Gesamtzahl von 6 sind Sie 17 am nächsten, bei einer Gesamtzahl von 12 haben Sie 18, was mehr ist als die Frage von 17 Mod 6. Sie nehmen dann 12 und minus von 17, die Ihnen geben Ihre Antwort, in diesem Fall 5.

17 mod 6 = 5

1
Chad Finch

Die Moduldivision gibt Ihnen den Rest einer Division und nicht den Quotienten.

1
samoz

Die Modulunterteilung ist ziemlich einfach. Es wird der Rest anstelle des Quotienten verwendet.

    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, also 13% 12 = 1.


Es hilft, sich den Modul als "Zyklus" vorzustellen.

Mit anderen Worten, für den Ausdruck n % 12, das Ergebnis wird immer <12 sein.

Das heißt, die Reihenfolge für die Menge 0..100 zum n % 12 ist:

{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}

In diesem Licht wird der Modul und seine Verwendung viel klarer.

1
Braden Best

Das einzig Wichtige zu verstehen ist, dass der Modul (hier mit% wie in C bezeichnet) durch den Euklid definiert wird Division .

Für zwei beliebige (d, q) - Ganzzahlen gilt immer :

d = ( d / q ) * q + ( d % q )

Wie Sie sehen können, hängt der Wert von d%q vom Wert von d/q Ab. Im Allgemeinen ist für positive ganze Zahlen d/q gegen Null abgeschnitten, zum Beispiel 5/2 ergibt 2, daher:

5 = (5/2)*2 + (5%2) => 5 = 2*2 + (5%2) => 5%2 = 1

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 gekürzt), kann aber auch -3 zurückgeben (mit einer anderen Sprache).

Im ersten Fall:

-5 = (-5/2)*2 + (-5%2) => -5 = -2*2 + (-5%2) => -5%2 = -1

aber im zweiten:

-5 = (-5/2)*2 + (-5%2) => -5 = -3*2 + (-5%2) => -5%2 = +1

Denken Sie wie gesagt an die Invariante , die die euklidische Division ist. .

Weitere Details:

1
Picaud Vincent

Schreiben Sie eine Tabelle, die mit 0 beginnt.

{0,1,2,3,4}

Setzen Sie die Tabelle in Zeilen fort.

{0,1,2,3,4}
{5,6,7,8,9}
{10,11,12,13,14}

Alles in Spalte eins ist ein Vielfaches von 5. Alles in Spalte 2 ist ein Vielfaches von 5 mit 1 als Rest. Nun der abstrakte Teil: Sie können das (1) als 1/5 oder als dezimale Erweiterung schreiben. Der Modul-Operator gibt nur die Spalte zurück oder, anders ausgedrückt, den Rest bei langer Division. Sie haben es mit modulo (5) zu tun. Unterschiedlicher Modul, unterschiedlicher Tisch. Stellen Sie sich eine Hash-Tabelle vor.

0

Es ist ganz einfach, der Modulus-Operator (%) 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, d. H. (27/16), erhalten Sie den Rest als 11, und deshalb lautet Ihre Antwort 11.

0
Shiraz Shrestha

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 es uns nur, was der Rest ist, wenn wir A durch B teilen. In diesen Fällen gibt es einen Operator, den Modulo-Operator (abgekürzt als mod).

Beispiele

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.

Siehe Khan Academy Article 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 und R die Anzahl der Slots oder Schlüssel ist, in die das Element eingefügt wird.

Weitere Informationen finden Sie unter Wie funktioniert eine Hash-Tabelle?

0