2013-07-08 12 views
19

ich den Modulus-Operator in Bezug auf den folgenden Ausdruck verstehen:Legendes Der Modulo-Operator%

7 % 5 

Dieses 2 aufgrund der Tatsache zurückkommen würde, dass 5 in 7 einmal geht und dann die 2 gibt, die übrig bleibt, , aber meine Verwirrung kommt, wenn Sie diese Aussage umkehren, um zu lesen:

5 % 7 

Dies gibt mir den Wert von 5, die mich etwas verwirrt. Obwohl das Ganze von 7 nicht in 5 geht, gibt es einen Teil davon, warum gibt es dann keinen Rest oder einen Rest von positivem oder negativem 2?

Wenn es den Wert von 5 basierend auf der Tatsache berechnet, dass 7 überhaupt nicht in 5 geht, warum ist der Rest dann nicht 7 statt 5?

Ich habe das Gefühl, dass hier etwas fehlt, was ich in meinem Verständnis des Modulusoperators vermisse.

+2

Modulus ist 'Absolutwert'. Sie beziehen sich auf 'modulo', was mit Resten zu tun hat. Es ist schade, dass die Wörter so ähnlich sind, da sie viele Leute stolpern. – Discordanian

+0

Ich hatte ein Problem mit Dezimalzahlen und negativen Zahlen und fand meine Antwort hier: https://StackOverflow.com/Questions/48662225/understanding-etwas-more-about-the-modulo-modulus-and-modulo-modulus-w –

Antwort

35

(Diese Erklärung ist nur für positive Zahlen, da sie von der Sprache abhängig sonst)

Modulus den Rest der Division einer Zahl durch eine andere gibt. Wenn du einem 8-jährigen Kind fragst, was 5 geteilt durch 7 ergibt (8 weil er meist keine Dezimalzahlen kennt), antwortet er: 0 aber es bleibt 5.

Du kannst auch diese Gleichung verwenden:

a % b = a - floor(a/b) * b 

floor(a/b) die Anzahl der Male stellt man a von b (siehe zum Beispiel die Abbildung unten) aufteilen. Und floor(a/b) * b der Betrag, der erfolgreich vollständig geteilt wurde. Was bedeutet, dass das Total minus was geteilt wurde, gleich dem Rest der Division ist. Jetzt können Sie diese Gleichung verwenden:

5 % 7 = 5 - floor(5/7) * 7 = 5 

Euclidian Division

das gesagt ist, Ihre Intuition war, dass es -2 sein könnte und nicht 5. Eigentlich in modularer Arithmetik, -2 = 5 (mod 7) weil es existiert k in Z, so dass 7k - 2 = 5.

Sie haben vielleicht nicht modulare Arithmetik gelernt, aber Sie haben wahrscheinlich Winkel verwendet und wissen, dass -90 ° ist das gleiche wie 270 °, weil es modulo 360 ist. Es ist ähnlich, es wickelt! Nimm also einen Kreis und sage, dass der Umfang 7 ist. Dann liest du, wo 5 ist. Und wenn du mit 10 versuchst, sollte es bei 3 sein, weil 10 % 7 3 ist.

0

Moduloperator gibt Ihnen das Ergebnis in 'reduziertes Rückstandssystem'. Zum Beispiel für mod 5 gibt es 5 ganze Zahlen gezählt: 0,1,2,3,4. In der Tat 19 = 12 = 5 = -2 = -9 (Mod 7). Der Hauptunterschied besteht darin, dass die Antwort von den Programmiersprachen durch ein "reduziertes Rückstandssystem" gegeben wird.

0

Eine neuartige Art und Weise wird den Rest, um herauszufinden, unter

Erklärung gegeben: Rest ist immer konstant

ex : 26 divided by 7 gives R : 5 

dies leicht teilt 26 durch Auffinden die Nummer werden kann, die vollständig, die näher ist herausgefunden der Divisor und der Differenz der beide

13 is the next number after 7 that completely divides 26 because after 7 comes 8, 9 , 

10, 11, 12 where none of them divides 26 completely and give remainder 0. 
So 13 is the closest number to 7 which divides to give Remainder 0. 
now take the difference (13 ~ 7) = 5 which is the Remainder . 

note : for this to work divisor should be reduced to its simplest form ex: if 14 
is the divisor ..7 has to be chosen to find the closest number dividing the dividend. 
3

Modul nimmt Reste System.

So 7% 5 = 2.

5% 7 = 5

3% 7 3 =

2% 7 2 =

1% 7 = 1

Wird innerhalb einer Funktion verwendet, um den Array-Index zu ermitteln. Ist es eine sichere Programmierung? Das ist eine andere Frage. Ich vermute.

1

Schritt 1: 5/7 = 0,71

Schritt 2: Nehmen Sie die linke Seite des dezimalen, so nehmen wir 0 von 0,71 und multipliziere mit 7 0 * 7 = 0;

Schritt #: 5-0 = 5; Daher wurde 5/7 = 5

2

Wie andere gezeigt haben, basiert der Modul auf dem Restsystem.

Ich glaube, ein einfacherer Weg, über den Modulus nachzudenken, ist der, der übrig bleibt, nachdem eine Dividende (zu teilende Zahl) vollständig durch einen Divisor geteilt wurde. Wenn wir also an 5% 7 denken, wenn Sie 5 durch 7 teilen, kann 7 nur 0 Mal in 5 gehen und wenn Sie 0 (7 * 0) von 5 subtrahieren (genau wie wir es in der Grundschule gelernt haben), dann den Rest wäre 5 (der Mod). Siehe die Abbildung unten.

0 
    ______ 
7) 5  
__-0____ 
    5 

Mit der gleichen Logik, -5 mod 7 werden -5 (nur 0 7s kann in -5 gehen und -5-0 * 7 = -5). Mit dem gleichen Token -5 wird auch mod -7 -5 sein. Einige weitere interessante Fälle:

5 mod (-3) = 2, dh 5 - (-3 * -1)

(-5) mod (-3) = -2 dh -5 - (-3 * 1) = -5 + 3

0

es auf diese Weise setzen läßt:
tatsächlich Modulus Operator hat die gleiche Teilung aber es hat über die Antwort nicht zu kümmern, es achtet Erinnerung zum Beispiel, wenn Sie dividiere 7 bis 5,
so, lasst mich dich durch ein einfaches Beispiel führen:
denke, 5 ist ein Block, dann zum Beispiel wir werden 3 Blöcke in 15 haben (WITH Nothing Left), aber wenn dieser login auf diese Art Zahlen kommt {1,3,5,7,9,11, ...}, kommt hier der Modulus heraus , also nimm die Logik, die ich vorher gesagt habe und wende sie für 7 an, also wird die Antwort sein, dass wir 1 Block von 5 in 7 => mit 2 in unserer Hand haben! das ist der Modul !!!
aber Sie fragen nach etwa 5% 7, oder?
also nimm die Logik, die ich sagte, wie viele 7 Blöcke haben wir in 5 ????
so die Modul liefert 0 ...
, dass es ...