Modulo -Betrieb

Im Computer, das Modulo -Betrieb Gibt die zurück Rest oder unterschriebene Rest von a Aufteilung, nachdem eine Nummer durch eine andere geteilt wurde (genannt die Modul der Operation).

Bei zwei positiven Zahlen a und n, a Modulo n (oft abgekürzt wie a Mod n oder wie a% n) ist der Rest der Euklidische Division von a durch n, wo a ist der Dividende und n ist der Divisor. Die Modulo -Operation ist vom Symbol zu unterscheiden Mod, was sich auf den Modul bezieht[1] (oder Divisor) Man arbeitet aus.

Zum Beispiel würde der Ausdruck "5 mod 2" auf 1 bewertet, da 5 geteilt durch 2 a Quotient von 2 und einem Rest von 1, während "9 mod 3" auf 0 bewerten würde, da die Aufteilung von 9 bis 3 einen Quotienten von 3 und einen Rest von 0 hat; Es gibt nichts zu subtrahieren von 9 nach dem Multiplizieren von 3 mal 3.

Obwohl normalerweise mit a und n beides sein GanzzahlenViele Computersysteme ermöglichen nun andere Arten von numerischen Operanden. Der Wertebereich für einen Ganzzahlmodulo -Betrieb von n ist 0 bis n - 1 inklusive (a Mod 1 ist immer 0; a Mod 0 ist undefiniert, möglicherweise zu einem Durch Null teilen Fehler in einigen Programmiersprachen). Sehen Modulararithmetik für eine ältere und verwandte Konvention in angewendet in Zahlentheorie.

Wann genau einer von a oder n ist negativ, die naive Definition bricht zusammen und die Programmiersprachen unterscheiden sich in der Definition dieser Werte.

Varianten der Definition

Im Mathematikdas Ergebnis der Modulo Operation ist ein Äquivalenzklasseund jedes Mitglied der Klasse kann als ausgewählt werden als Vertreter; Der übliche Vertreter ist jedoch der am wenigsten positive Rückstände, die kleinste nicht negative Ganzzahl, die zu dieser Klasse gehört (d. H. Der Rest der Euklidische Division).[2] Andere Konventionen sind jedoch möglich. Computer und Taschenrechner haben verschiedene Möglichkeiten, Zahlen zu speichern und darzustellen; Somit hängt ihre Definition des Modulo -Vorgangs von der ab Programmiersprache oder das zugrunde liegende Hardware-.

In fast allen Computersystemen der Quotient q und der Rest r von a geteilt durch n Erfüllen Sie die folgenden Bedingungen:

 

 

 

 

(1)

Dies hinterlässt jedoch immer noch ein Vorzeichen-Unklarheit, wenn der Rest ungleich Null ist: Zwei mögliche Auswahlmöglichkeiten für den Rest treten auf, eine negative und die andere positiv und zwei mögliche Auswahlmöglichkeiten für den Quotienten. In der Zahlentheorie wird der positive Rest immer ausgewählt, aber bei der Berechnung, Programmiersprachen wählen abhängig von der Sprache und den Zeichen von a oder n.[a] Standard Pascal und Algol 68Geben Sie zum Beispiel einen positiven Rest (oder 0) auch für negative Divisors und einige Programmiersprachen wie C90 an, die es der Implementierung, wenn einer von n oder a ist negativ (siehe die Tabelle unter § in Programmiersprachen für Details). a Modulo 0 ist in den meisten Systemen undefiniert, obwohl einige es definieren als a.

  •   Quotienten (q) und   Rest (r) als Funktionen der Dividende (a) unter Verwendung einer verkürzten Division
    Viele Implementierungen verwenden abgeschnittene Abteilung, wo der Quotient definiert wird durch Kürzung (ganzzahliger Teil) und damit gemäß Gleichung (1) Der Rest hätte das Gleiches Zeichen wie die Dividende. Der Quotient ist gerundet In Richtung Null: gleich der ersten Ganzzahl in Richtung Null aus dem genauen rationalen Quotienten.
  • Quotient und Rest mit Bodendivision
    Donald Knuth[3] beschrieben Bodendivision wo der Quotient durch die definiert wird Bodenfunktion und damit gemäß Gleichung (1) Der Rest hätte das Gleiches Zeichen wie der Teiler. Aufgrund der Bodenfunktion ist der Quotient immer nach unten abgerundet, auch wenn er bereits negativ ist.
  • Quotient und Rest der euklidischen Division
    Raymond T. Boute[4] beschreibt die euklidische Definition, in der der Rest immer nicht negativ ist, 0 ≤ rund ist somit mit dem überein Euklidische Division Algorithmus. In diesem Fall,

    oder gleichwertig

    wo sgn ist der Zeichenfunktion, und somit

  • Quotient und Rest mit der Rundungsabteilung
    In einer Rundkabine ist der Quotient , d.h. auf die nächste Ganzzahl abgerundet. Es wird in gemeinsam Lisp und gefunden und IEEE 754 (Siehe Runde zum nächsten Tagung in IEEE-754). Somit wird das Zeichen des Restes ausgewählt, um zu sein am nächsten zu Null.
  • Quotient und Rest mit Deckenabteilung
    Common Lisp definiert auch Deckenbindungen (Rest verschiedener Zeichen als Divisor), bei dem der Quotient gegeben wird . Somit wird das Zeichen des Restes ausgewählt, um zu sein anders als der des Teils.

Wie von Leijen beschrieben,

Boute argumentiert, dass die euklidische Division den anderen in Bezug auf Regelmäßigkeit und nützliche mathematische Eigenschaften überlegen ist, obwohl die von Knuth geförderte Bodendivision auch eine gute Definition ist. Trotz seiner weit verbreiteten Verwendung wird gezeigt, dass die verkürzte Teilung den anderen Definitionen unterlegen ist.

-Daan Leijen, Teilung und Modul für Informatiker[5]

Die verkürzte Abteilung erfüllt jedoch die Identität .[6]

Notation

Einige Taschenrechner haben a mod () Funktionstaste und viele Programmiersprachen haben eine ähnliche Funktion, ausgedrückt als mod (a, n), zum Beispiel. Einige unterstützen auch Ausdrücke, die "%", "Mod" oder "Mod" als Modulo oder Rest verwenden Operator, wie zum Beispiel a % n oder a mod n.

Für Umgebungen, in denen eine ähnliche Funktion fehlt, kann eine der drei oben genannten Definitionen verwendet werden.

Häufige Fehler

Wenn das Ergebnis einer Modulo -Operation das Zeichen der Dividende hat (Definitionsdefinition), kann dies zu überraschenden Fehlern führen.

Zum Beispiel zu testen, ob eine Ganzzahl ist seltsamMan könnte geneigt sein zu testen, ob der Rest von 2 gleich 1 ist:

bool ist ungerade(int n) {   Rückkehr n % 2 == 1; } 

Aber in einer Sprache, in der Modulo das Zeichen der Dividende hat, ist das falsch, denn wann n (Die Dividende) ist negativ und ungerade, n MOD 2 gibt –1 zurück und die Funktion gibt false zurück.

Eine korrekte Alternative ist zu testen, dass der Rest nicht 0 ist (da der Rest 0 unabhängig von den Zeichen gleich ist):

bool ist ungerade(int n) {   Rückkehr n % 2 ! = 0; } 

Eine andere Alternative besteht darin, die Tatsache zu verwenden, dass der Rest für jede ungerade Zahl entweder 1 oder -1 sein kann:

bool ist ungerade(int n) {   Rückkehr n % 2 == 1 || n % 2 == -1; } 

Eine einfachere Alternative besteht darin, das Ergebnis von n% 2 so zu behandeln, als ob es sich um einen booleschen Wert handelt, bei dem ein Wert ungleich Null ist:

bool ist ungerade(int n) {   Rückkehr n % 2; } 

Performance-Probleme

Modulo -Operationen können so implementiert werden, dass jedes Mal eine Abteilung mit einem Rest berechnet wird. Für besondere Fälle gibt es bei einigen Hardware schnellere Alternativen. Zum Beispiel das Modulo von Kräfte von 2 kann alternativ als ausgedrückt werden bitweise Und Operation (Annahme x ist eine positive Ganzzahl oder verwendet eine nicht verwolkte Definition):

x% 2n == x & (2n - 1)

Beispiele:

x % 2 == x & 1
x % 4 == x & 3
x % 8 == x & 7

In Geräten und Software, die bitweise Vorgänge effizienter als Modulo implementieren, können diese alternativen Formen zu schnelleren Berechnungen führen.[7]

Compiler -Optimierungen kann Ausdrücke der Form erkennen expression % constant wo constant ist eine Leistung von zwei und implementieren sie automatisch als expression & (constant-1), damit der Programmierer klarerer Code schreiben kann, ohne die Leistung zu beeinträchtigen. Diese einfache Optimierung ist für Sprachen nicht möglich, in denen das Ergebnis des Modulo -Betriebs das Zeichen der Dividende hat (einschließlich C), es sei denn, die Dividende ist von a ohne Vorzeichen Ganzzahltyp. Dies liegt daran, dass das Modulo negativ ist, wenn die Dividende negativ ist, während expression & (constant-1) wird immer positiv sein. Für diese Sprachen die Äquivalenz x% 2n == x <0? x | ~ (2n - 1): x & (2n - 1) muss stattdessen verwendet werden, mit bitweise oder nicht und operationen ausgedrückt werden.

Optimierungen für allgemeine Operationen mit konstantem Modulus existieren auch, indem die Teilung zunächst mit dem berechnet wird Optimierung mit Konstantivisoren.

Eigenschaften (Identitäten)

Einige Modulo -Operationen können ähnlich wie bei anderen mathematischen Operationen berücksichtigt oder erweitert werden. Dies kann nützlich sein in Kryptographie Beweise wie die Diffie -Hellman Key Exchange. Einige dieser Eigenschaften erfordern das a und n sind ganze Zahlen.

  • Identität:
    • (a Mod n) mod n = a Mod n.
    • nx Mod n = 0 für alle positiven Ganzzahlwerte von x.
    • Wenn p ist ein Primzahl Welches ist nicht a Divisor von b, dann abp–1 Mod p = a Mod p, wegen Fermats kleiner Theorem.
  • Umgekehrt:
  • Verteilung:
    • (a + b) mod n = [((()a Mod n) + (b Mod n)] mod n.
    • ab Mod n = [((()a Mod n) (b Mod n)] mod n.
  • Abteilung (Definition): a/b Mod n = [((()a Mod n) (b–1 Mod n)] mod n, wenn die rechte Seite definiert ist (das ist dann b und n sind Coprime), und sonst undefiniert.
  • Inverse Multiplikation: [(ab Mod n) (b–1 Mod n)] mod n = a Mod n.

In Programmiersprachen

Modulo -Operatoren in verschiedenen Programmiersprachen
Sprache Operator Ganze Zahl Schwimmpunkt Definition
Abap MOD Ja Ja Euklidisch
Aktionen % Ja Nein Gekürzt
Ada mod Ja Nein Bodend[8]
rem Ja Nein Gekürzt[8]
Algol 68 ÷×, mod Ja Nein Euklidisch
Ampl mod Ja Nein Gekürzt
Apl |[b] Ja Nein Bodend
Apfelkript mod Ja Nein Gekürzt
Autolisp (rem d n) Ja Nein Gekürzt
Awk % Ja Nein Gekürzt
BASIC Mod Ja Nein Nicht definiert
BC % Ja Nein Gekürzt
C
C ++
%, div Ja Nein Gekürzt[c]
fmod (C)
std::fmod (C ++)
Nein Ja Gekürzt[11]
remainder (C)
std::remainder (C ++)
Nein Ja Gerundet
C# % Ja Ja Gekürzt
Clarion % Ja Nein Gekürzt
Sauber rem Ja Nein Gekürzt
Clojure mod Ja Nein Bodend[12]
rem Ja Nein Gekürzt[13]
Cobol FUNCTION MOD Ja Nein Bodend[d]
CoffeeScript % Ja Nein Gekürzt
%% Ja Nein Bodend[14]
Coldfusion %, MOD Ja Nein Gekürzt
Common Lisp mod Ja Ja Bodend
rem Ja Ja Gekürzt
Kristall %, modulo Ja Ja Bodend
remainder Ja Ja Gekürzt
D % Ja Ja Gekürzt[15]
Pfeil % Ja Ja Euklidisch[16]
remainder() Ja Ja Gekürzt[17]
Eiffel \\ Ja Nein Gekürzt
Elixier rem/2 Ja Nein Gekürzt[18]
Integer.mod/2 Ja Nein Bodend[19]
Ulme modBy Ja Nein Bodend[20]
remainderBy Ja Nein Gekürzt[21]
Erlang rem Ja Nein Gekürzt
math:fmod/2 Nein Ja Verkürzt (gleich wie c)[22]
Euphorie mod Ja Nein Bodend
remainder Ja Nein Gekürzt
F# % Ja Ja Gekürzt
Faktor mod Ja Nein Gekürzt
FileMaker Mod Ja Nein Bodend
Weiter mod Ja Nein Implementierung definiert
fm/mod Ja Nein Bodend
sm/rem Ja Nein Gekürzt
Forran mod Ja Ja Gekürzt
modulo Ja Ja Bodend
Frink mod Ja Nein Bodend
GLSL % Ja Nein Nicht definiert[23]
mod Nein Ja Bodend[24]
Gamemaker Studio (GML) mod, % Ja Nein Gekürzt
Gdscript (Godot) % Ja Nein Gekürzt
fmod Nein Ja Gekürzt
posmod Ja Nein Bodend
fposmod Nein Ja Bodend
gehen % Ja Nein Gekürzt[25]
math.Mod Nein Ja Gekürzt[26]
big.Int.Mod Ja Nein Euklidisch[27]
Groovig % Ja Nein Gekürzt
Haskell mod Ja Nein Bodend[28]
rem Ja Nein Gekürzt[28]
Data.Fixed.mod' (GHC)) Nein Ja Bodend
Haxe % Ja Nein Gekürzt
HLSL % Ja Ja Nicht definiert[29]
J |[b] Ja Nein Bodend
Java % Ja Ja Gekürzt
Math.floorMod Ja Nein Bodend
JavaScript
Typoskript
% Ja Ja Gekürzt
Julia mod Ja Ja Bodend[30]
%, rem Ja Ja Gekürzt[31]
Kotlin %, rem Ja Ja Gekürzt[32]
mod Ja Ja Bodend[33]
ksh % Ja Nein Verkürzt (gleich wie POSIX SH)
fmod Nein Ja Gekürzt
Labor mod Ja Ja Gekürzt
Libreoffice =MOD() Ja Nein Bodend
Logo MODULO Ja Nein Bodend
REMAINDER Ja Nein Gekürzt
Lua 5 % Ja Ja Bodend
Lua 4 mod(x,y) Ja Ja Gekürzt
Liberty Basic MOD Ja Nein Gekürzt
Mathcad mod(x,y) Ja Nein Bodend
Ahorn e mod m (standardmäßig), modp(e, m) Ja Nein Euklidisch
mods(e, m) Ja Nein Gerundet
frem(e, m) Ja Ja Gerundet
Mathematica Mod[a, b] Ja Nein Bodend
Matlab mod Ja Nein Bodend
rem Ja Nein Gekürzt
Maxima mod Ja Nein Bodend
remainder Ja Nein Gekürzt
Maya eingebettete Sprache % Ja Nein Gekürzt
Microsoft Excel =MOD() Ja Ja Bodend
Minitab MOD Ja Nein Bodend
Modula-2 MOD Ja Nein Bodend
REM Ja Nein Gekürzt
MUMPS # Ja Nein Bodend
Netzweiter Assembler (Nasm, Nasmx)) %, div (ohne Vorzeichen) Ja Nein -
%% (unterzeichnet) Ja Nein Implementierung definiert[34]
Nim mod Ja Nein Gekürzt
Oberon MOD Ja Nein Bodenartig[e]
Ziel c % Ja Nein Verkürzt (wie C99)
Objekt Pascal, Delphi mod Ja Nein Gekürzt
Ocaml mod Ja Nein Gekürzt[35]
mod_float Nein Ja Gekürzt[36]
Occam \ Ja Nein Gekürzt
Pascal (ISO -7185 und -10206) mod Ja Nein Euklidisch[f]
Programmiercode erweitert (PCA)) \ Ja Nein Nicht definiert
Perl % Ja Nein Bodend[g]
POSIX::fmod Nein Ja Gekürzt
Phix mod Ja Nein Bodend
remainder Ja Nein Gekürzt
Php % Ja Nein Gekürzt[38]
fmod Nein Ja Gekürzt[39]
Bild BASIC Profi \\ Ja Nein Gekürzt
Pl/i mod Ja Nein Bodened (ansi pl/i)
Power Shell % Ja Nein Gekürzt
Programmiercode (PRC)) MATH.OP - 'MOD; (\)' Ja Nein Nicht definiert
Fortschritt modulo Ja Nein Gekürzt
Prolog (ISO 1995)) mod Ja Nein Bodend
rem Ja Nein Gekürzt
PureBasic %, Mod(x,y) Ja Nein Gekürzt
Pureskript `mod` Ja Nein Euklidisch[40]
Reine Daten % Ja Nein Verkürzt (gleich wie c)
mod Ja Nein Bodend
Python % Ja Ja Bodend
math.fmod Nein Ja Gekürzt
Q# % Ja Nein Gekürzt[41]
R %% Ja Nein Bodend
Schläger modulo Ja Nein Bodend
remainder Ja Nein Gekürzt
Raku % Nein Ja Bodend
Realbasic MOD Ja Nein Gekürzt
Grund mod Ja Nein Gekürzt
Rexx // Ja Ja Gekürzt
Rollenspiel %REM Ja Nein Gekürzt
Rubin %, modulo() Ja Ja Bodend
remainder() Ja Ja Gekürzt
Rost % Ja Ja Gekürzt
rem_euclid() Ja Ja Euklidisch[42]
SAS MOD Ja Nein Gekürzt
Scala % Ja Nein Gekürzt
Planen modulo Ja Nein Bodend
remainder Ja Nein Gekürzt
Planen R6Rs mod Ja Nein Euklidisch[43]
mod0 Ja Nein Gerundet[43]
flmod Nein Ja Euklidisch
flmod0 Nein Ja Gerundet
Kratzen mod Ja Ja Bodend
Samen7 mod Ja Ja Bodend
rem Ja Ja Gekürzt
Sensetalk modulo Ja Nein Bodend
rem Ja Nein Gekürzt
sh (Posix) (einschließlich verprügeln, Mksh, &c.) % Ja Nein Verkürzt (gleich wie c)[44]
Smalltalk \\ Ja Nein Bodend
rem: Ja Nein Gekürzt
Schnapp! mod Ja Nein Bodend
Drehen // Ja Nein Bodend
Solidität % Ja Nein Bodend
Sql (SQL: 1999)) mod(x,y) Ja Nein Gekürzt
Sql (SQL: 2011)) % Ja Nein Gekürzt
Standard ml mod Ja Nein Bodend
Int.rem Ja Nein Gekürzt
Real.rem Nein Ja Gekürzt
Stata mod(x,y) Ja Nein Euklidisch
Schnell % Ja Nein Gekürzt[45]
remainder(dividingBy:) Nein Ja Gerundet[46]
truncatingRemainder(dividingBy:) Nein Ja Gekürzt[47]
Tcl % Ja Nein Bodend
Drehmoment % Ja Nein Gekürzt
Turing mod Ja Nein Bodend
Verilog (2001) % Ja Nein Gekürzt
VHDL mod Ja Nein Bodend
rem Ja Nein Gekürzt
Viml % Ja Nein Gekürzt
Visual Basic Mod Ja Nein Gekürzt
WebAssembly i32.rem_u, i64.rem_u (ohne Vorzeichen) Ja Nein [48]
i32.rem_s, i64.rem_s (unterzeichnet) Ja Nein Gekürzt[49]
x86 Montage IDIV Ja Nein Gekürzt
Xbase ++ % Ja Ja Gekürzt
Mod() Ja Ja Bodend
Z3 Theorem Prover div, mod Ja Nein Euklidisch

Darüber hinaus bieten viele Computersysteme a divmod Funktionalität, die gleichzeitig den Quotienten und den Rest erzeugt. Beispiele sind die x86 Architektur's IDIV Anweisungen, die C -Programmiersprache der von C. div() Funktion und Python's divmod() Funktion.

Verallgemeinerungen

Modulo mit Offset

Manchmal ist es nützlich für das Ergebnis von a Modulo n nicht zwischen 0 und nicht liegen n - 1, aber zwischen einer Reihe d und d + n - 1. In diesem Fall, d wird als ein genannt Offset. Es scheint keine Standardnotation für diesen Vorgang zu geben. Lassen Sie uns also vorläufig verwenden a Modd n. Wir haben also die folgende Definition:[50] x = a Modd n Nur für den Fall dxd + n - 1 und x Mod n = a Mod n. Offensichtlich entspricht der übliche Modulo -Betrieb null Offset: a Mod n = a Mod0 n. Der Betrieb von Modulo mit Offset hängt mit dem zusammen Bodenfunktion folgendermaßen:

(Um dies zu sehen, lassen Sie es . Wir zeigen das zuerst x Mod n = a Mod n. Es ist im Allgemeinen wahr, dass (a + bn) mod n = a Mod n Für alle Ganzzahlen b; Dies gilt daher auch in dem speziellen Fall, wenn ; Aber das bedeutet das , was wir beweisen wollten. Es bleibt abzuweisen, dass dxd + n - 1. Lassen k und r Seien Sie die Ganzzahlen, so dass ad = Kn + r mit 0 ≤ rn - 1 (sehen Euklidische Division). Dann , daher . Jetzt nimm 0 ≤ rn - 1 und hinzufügen d zu beiden Seiten erhalten dd + rd + n - 1. Aber das haben wir gesehen x = d + rAlso sind wir fertig. □)

Das Modulo mit Offset a Modd n wird in implementiert Mathematica wie Mod[a, n, d].[50]

Implementierung anderer Modulo -Definitionen mithilfe von Kürzungen

Trotz der mathematischen Eleganz von Knuths Bodenabteilung und euklidischer Abteilung ist es im Allgemeinen viel häufiger, ein abgeschnittenes aufteilungsbasiertes Modulo in Programmiersprachen zu finden. Leijen liefert die folgenden Algorithmen zur Berechnung der beiden Abteilungen mit einer verkürzten Ganzzahlabteilung:[5]

/ * Euklidische und bodend Divmod im Stil von Cs ldiv () */////// Typedef Struktur {   / * Diese Struktur ist Teil des C stdlib.h, wird aber hier aus Klarheit reproduziert */   lang int zitieren;   lang int Rem; } LDIV_T; / * Euklidische Division */ in der Reihe LDIV_T ldive(lang Numer, lang Denom) {   /* Die Sprachen von C99 und C ++ 11 definieren beide als abgeschnitten. */   lang q = Numer / Denom;   lang r = Numer % Denom;   wenn (r < 0) {   wenn (Denom > 0) {   q = q - 1;   r = r + Denom;   } anders {   q = q + 1;   r = r - Denom;   }   }   Rückkehr (LDIV_T) {.zitieren = q, .Rem = r}; } / * Bodendivision */ in der Reihe LDIV_T ldivf(lang Numer, lang Denom) {   lang q = Numer / Denom;   lang r = Numer % Denom;   wenn ((r > 0 && Denom < 0) || (r < 0 && Denom > 0)) {   q = q - 1;   r = r + Denom;   }   Rückkehr (LDIV_T) {.zitieren = q, .Rem = r}; } 

In beiden Fällen kann der Rest unabhängig vom Quotienten berechnet werden, aber nicht umgekehrt. Die Vorgänge werden hier kombiniert, um den Bildschirmraum zu sparen, da die logischen Zweige gleich sind.

Siehe auch

Anmerkungen

  1. ^ Mathematisch sind diese beiden Auswahlmöglichkeiten nur zwei der unendlichen Anzahl von Auswahlmöglichkeiten für die Ungleichheit, die von einem Rest erfüllt ist.
  2. ^ a b Argumentreihenfolge kehrt sich um, d.h. α | ω berechnet , der Rest beim Teilen ω durch α.
  3. ^ C99 und C ++ 11 das Verhalten von definieren % verkürzt werden.[9] Die Standards zuvor lassen die Verhaltensimplementierung definiert.[10]
  4. ^ Wie in Acucobol, Micro Focus COBOL und mögliche andere implementiert.
  5. ^ Der Divisor muss positiv sein, ansonsten undefiniert.
  6. ^ Wie von Boute diskutiert, ist Iso Pascals Definitionen von div und mod gehorchen nicht der Teilung Identität von D = d · (D / d) + D% dund sind also grundlegend gebrochen.
  7. ^ Perl verwendet normalerweise den arithmetischen Modulo-Operator, der maschinenunabhängig ist. Beispiele und Ausnahmen finden Sie in der Perl -Dokumentation zu multiplikativen Betreibern.[37]

Verweise

  1. ^ Weisstein, Eric W. "Kongruenz". mathworld.wolfram.com. Abgerufen 2020-08-27.
  2. ^ Caldwell, Chris. "Rückstand". Prime Glossar. Abgerufen 27. August, 2020.
  3. ^ Knuth, Donald. E. (1972). Die Kunst der Computerprogrammierung. Addison-Wesley.
  4. ^ Boute, Raymond T. (April 1992). "Die euklidische Definition der Funktionen Div und Mod". ACM -Transaktionen zu Programmiersprachen und Systemen. ACM Press (New York, NY, USA). 14 (2): 127–144. doi:10.1145/128861.128862. HDL:1854/lU-314490. S2CID 8321674.
  5. ^ a b Leijen, Daan (3. Dezember 2001). "Teilung und Modul für Informatiker" (PDF). Abgerufen 2014-12-25. {{}}: Journal zitieren erfordert |journal= (Hilfe)
  6. ^ Peterson, Doktor (5. Juli 2001). "MOD -Funktion und negative Zahlen". Math Forum - Fragen Sie Dr. Math. Archiviert von das Original Am 2019-10-22. Abgerufen 22. Oktober 2019.
  7. ^ Horvath, Adam (5. Juli 2012). "Schnellere Abteilung und Modulo -Betrieb - die Leistung von zwei".
  8. ^ a b "ISO/IEC 8652: 2012 - Informationstechnologie - Programmiersprachen - ADA". ISO, IEC. 2012. Sec. 4.5.5 Multiplizieren von Betreibern. {{}}: Journal zitieren erfordert |journal= (Hilfe)
  9. ^ "C99 -Spezifikation (ISO/IEC 9899: TC2)" (PDF). 2005-05-06. Sek. 6.5.5 Multiplikationsbetreiber. Abgerufen 16. August 2018.
  10. ^ "ISO/IEC 14882: 2003: Programmiersprachen - C ++". Internationale Standardisierungsorganisation (ISO), Internationale Elektrotechnische Kommission (IEC). 2003. Sek. 5.6.4. Der binäre% -Preiber ergibt den Rest aus der Teilung des ersten Ausdrucks im zweiten. .... Wenn beide Operanden nicht negativ sind, ist der Rest nicht negativ; Wenn nicht, ist das Zeichen des Restes implementiert definiert {{}}: Journal zitieren erfordert |journal= (Hilfe)
  11. ^ "ISO/IEC 9899: 1990: Programmiersprachen - C". ISO, IEC. 1990. Sec. 7.5.6.4. Das fmod Funktion gibt den Wert zurück x - i * yfür eine Ganzzahl i so dass, wenn y ist ungleich Null, das Ergebnis hat das gleiche Zeichen wie x und Größe weniger als die Größe von y. {{}}: Journal zitieren erfordert |journal= (Hilfe)
  12. ^ "Clojure.core - Clojure v1.10.3 API -Dokumentation". clojure.github.io. Abgerufen 2022-03-16.
  13. ^ "Clojure.core - Clojure v1.10.3 API -Dokumentation". clojure.github.io. Abgerufen 2022-03-16.
  14. ^ Coffeescript -Operatoren
  15. ^ "Ausdrücke - D Programmiersprache". dlang.org. Abgerufen 2021-06-01.
  16. ^ "Operator% Methode - Num Class - DART: Core Library - DART API". api.dart.dev. Abgerufen 2021-06-01.
  17. ^ "Restmethode - Num Class - Dart: Core Library - Dart -API". api.dart.dev. Abgerufen 2021-06-01.
  18. ^ "Kernel - Elixir v1.11.3". hexdocs.pm. Abgerufen 2021-01-28.
  19. ^ "Ganzzahl - Elixir v1.11.3". hexdocs.pm. Abgerufen 2021-01-28.
  20. ^ "Grundlagen - Core 1.0.5". package.elm-Lang.org. Abgerufen 2022-03-16.
  21. ^ "Grundlagen - Core 1.0.5". package.elm-Lang.org. Abgerufen 2022-03-16.
  22. ^ "Erlang - Mathematik". Erlang.org. Abgerufen 2021-06-01.
  23. ^ "GLSL -Sprachspezifikation, Version 4.50.7" (PDF). Abschnitt 5.9 Ausdrücke. Wenn beide Operanden nicht negativ sind, ist der Rest nicht negativ. Die Ergebnisse sind undefiniert, wenn einer oder beide Operanden negativ sind.
  24. ^ "GLSL -Sprachspezifikation, Version 4.50.7" (PDF). Abschnitt 8.3 Häufige Funktionen.
  25. ^ "Die GO -Programmiersprache Spezifikation - Die Go -Programmiersprache". Go.dev. Abgerufen 2022-02-28.
  26. ^ "Mathematikpaket - Math - pkg.go.dev". pkg.go.dev. Abgerufen 2022-02-28.
  27. ^ "Großes Paket - Math/Big - pkg.go.dev". pkg.go.dev. Abgerufen 2022-02-28.
  28. ^ a b "6 vordefinierte Typen und Klassen". www.haskell.org. Abgerufen 2022-05-22.
  29. ^ "Operatoren". Microsoft. Abgerufen 2021-07-19. Der% Operator ist nur in Fällen definiert, in denen beide Seiten positiv oder beide Seiten negativ sind. Im Gegensatz zu C arbeitet es auch mit Floating-Punkt-Datentypen sowie von Ganzzahlen.
  30. ^ "Mathematik · Die Julia -Sprache". docs.julialang.org. Abgerufen 2021-11-20.
  31. ^ "Mathematik · Die Julia -Sprache". docs.julialang.org. Abgerufen 2021-11-20.
  32. ^ "REM - Kotlin Programmiersprache". Kotlin. Abgerufen 2021-05-05.
  33. ^ "Mod - Kotlin Programmiersprache". Kotlin. Abgerufen 2021-05-05.
  34. ^ "Kapitel 3: Die Nasmsprache". Nasm - der netzweite Assembler Version 2.15.05.
  35. ^ "OCAML Library: Stdlib". ocaml.org. Abgerufen 2022-02-19.
  36. ^ "OCAML Library: Stdlib". ocaml.org. Abgerufen 2022-02-19.
  37. ^ Perl -Dokumentation
  38. ^ "PHP: Arithmetische Operatoren - Handbuch". www.php.net. Abgerufen 2021-11-20.
  39. ^ "PHP: FMOD - Handbuch". www.php.net. Abgerufen 2021-11-20.
  40. ^ "Euklidanring".
  41. ^ Quantenwriter. "Ausdrücke". docs.microsoft.com. Abgerufen 2018-07-11.
  42. ^ "F32 - Rost".
  43. ^ a b r6rs.org
  44. ^ "Shell -Befehlssprache". Pubs.opengroup.org. Abgerufen 2021-02-05.
  45. ^ "Apple Developer Dokumentation". Entwickler.apple.com. Abgerufen 2021-11-20.
  46. ^ "Apple Developer Dokumentation". Entwickler.apple.com. Abgerufen 2021-11-20.
  47. ^ "Apple Developer Dokumentation". Entwickler.apple.com. Abgerufen 2021-11-20.
  48. ^ "Numerics-WebAssembly 1.1 (Entwurf 2022-03-02)". WebAssembly.github.io. Abgerufen 2022-03-16.
  49. ^ "Numerics-WebAssembly 1.1 (Entwurf 2022-03-02)". WebAssembly.github.io. Abgerufen 2022-03-16.
  50. ^ a b "Mod". Wolfram Language & System Documentation Center. Wolfram -Forschung. 2020. Abgerufen 8. April, 2020.

Externe Links

  • Modulorama, Animation einer zyklischen Darstellung von Multiplikationstabellen (Erklärung auf Französisch)