Modulo-Rechner

Rest (a mod b)
Weiter

Die Modulo- (oder “mod”) Operation gibt den Rest nach der ganzzahligen Division zurück: 17 mod 5 = 2, weil 17 = 3·5 + 2. Es ist das Herz der Uhr-Arithmetik, Kryptographie, Hash-Funktionen und des “jeden N-ten Zeile”-Musters in SQL. Dieser Rechner akzeptiert ganze oder Dezimalzahlen, zeigt den Quotienten und Rest explizit an und behandelt die Unterschiede in der Vorzeichenkonvention zwischen den Sprachen (Pythons % ≠ Cs % für negative Zahlen).

Wie man a mod b berechnet

  1. 1

    Geben Sie den Dividenden (a) und den Divisor (b) ein

    Beliebige Zahlen; Dezimalzahlen und negative Zahlen sind in Ordnung.

  2. 2

    Wählen Sie die Vorzeichenkonvention

    Abgeschnittene Division (C, Java, Go), abgerundete Division (Python, Ruby, mathematische Konvention).

  3. 3

    Lesen Sie den Quotienten und den Rest

    a = q·b + r, mit der gewählten Regel für das Vorzeichen von r.

  4. 4

    Sehen Sie den mathematischen Ausdruck

    Eingesetzte Werte machen jeden Schritt sichtbar.

Zwei Konventionen für negative Zahlen

Für positive Operanden stimmen alle Konventionen überein: 17 mod 5 = 2. Für negative Zahlen unterscheiden sich die Sprachen:

Sprache -17 mod 5 Konvention
Python, Ruby 3 Abgerundet
C, Java, Go, JS -2 Abgeschnitten
Mathematik-Lehrbücher 3 Abgerundet (gewöhnlich)

Abgerundete Division: Der Quotient wird auf −∞ gerundet. Der Rest hat immer das Vorzeichen des Divisors: dasselbe Vorzeichen wie b. Abgeschnittene Division: Der Quotient wird auf null gerundet. Der Rest hat das Vorzeichen des Dividenden: dasselbe Vorzeichen wie a.

Für a = -17, b = 5:

  • Abgeschnitten: q = -3 (auf 0 gerundet), r = -17 − (-3)·5 = -2.
  • Abgerundet: q = -4 (auf −∞ gerundet), r = -17 − (-4)·5 = 3.

Beide sind korrekt, je nach Konvention. Wählen Sie die, die zu Ihrer Sprache passt.

Wo Modulo auftaucht

  • Zeit. Minuten in einer Stunde, Wochentage, Sekunden in einem Tag, alles Mod-Arithmetik.
  • Hash-Tabellen. hash(key) mod table_size wählt einen Eimer aus.
  • Round-Robin-Planung. task_i mod worker_count weist Arbeit zu.
  • Kryptographie. RSA und Diffie-Hellman basieren auf mod n mit großen Primzahlen.
  • Jede N-te Zeile. In SQL: WHERE id % 3 = 0.
  • Gerade/Ungerade-Prüfung. n mod 2 == 0 bedeutet gerade.
  • Wechselnde Muster. Zeilenstreifen, jedes zweite Element einfärben.
  • Zirkuläre Puffer. (index + 1) mod size wickelt sich um.

Nützliche Identitäten

  • (a + b) mod n = ((a mod n) + (b mod n)) mod n
  • (a · b) mod n = ((a mod n) · (b mod n)) mod n
  • (a^k) mod n kann durch schnelle modulare Exponentiation in O(log k) berechnet werden, entscheidend für Kryptographie mit großen Zahlen.
  • a mod 1 = 0 für jede ganze Zahl a.
  • a mod a = 0.

Dezimal-Modulo

Für reelle Zahlen ist die natürliche Definition a mod b = a − b · floor(a/b). 7.5 mod 2.5 = 0, weil 7.5 ein genaues Vielfaches ist. 7.6 mod 2.5 = 0.1.

Javascripts %-Operator funktioniert mit reellen Zahlen; Pythons fmod macht abgeschnittenes reelles Mod; Pythons % macht abgerundetes reelles Mod.

Anwendungsbeispiele

  • 100 mod 7: 100 = 14·7 + 2, also Rest 2.
  • 25 mod 4: 25 = 6·4 + 1, also Rest 1.
  • -10 mod 3 (abgerundet): -10 = -4·3 + 2, Rest 2. (Abgeschnitten würde -1 ergeben.)
  • 17.5 mod 5: 17.5 = 3·5 + 2.5, Rest 2.5.

Häufig gestellte Fragen

Meistens sind sie Synonyme. Formal impliziert “Modulo” oft die mathematische (abgerundete) Konvention, während “Rest” oft auf die abgeschnittene (C-Stil) Variante verweist. Die Namen tauchen in den Sprachdokumentationen auf; wenn es wichtig ist, geben Sie die Konvention an.

Python folgt der mathematischen Konvention (abgerundet), die das Vorzeichen des Rests mit dem des Divisors übereinstimmt. C folgt der Hardware-ALU-Konvention (abgeschnitten), bei der das Vorzeichen des Rests mit dem des Dividenden übereinstimmt. Keines ist falsch; es sind unterschiedliche Entscheidungen.

Nein, Division durch Null ist undefiniert. Der Rechner gibt einen Fehler für b = 0 zurück.

In der Regel ja. Überprüfen Sie die Spezifikation Ihrer Sprache zur Handhabung von negativen Zahlen, Python und Ruby unterscheiden sich von C, Java, Go und JavaScript.

Für RSA-ähnliche Mathematik mit 2048-Bit-Zahlen verwenden Sie eine spezielle Bibliothek (Pythons pow(a, b, n), Javas BigInteger.modPow). Dieser Rechner behandelt alltägliche Werte, keine kryptografischen.

Verwandte Tools

Tool in anderen Sprachen verfügbar