Modulo-calculator

Rest (a mod b)
Volgende

De modulo- (of “mod”)-bewerking geeft de rest na gehele deling: 17 mod 5 = 2, omdat 17 = 3·5 + 2. Ze vormt de kern van klokrekenkunde, cryptografie, hashfuncties en het “elke N-de rij”-patroon in SQL. Deze calculator accepteert gehele of decimale operanden, toont het quotiënt en de rest expliciet en verwerkt de verschillen in tekenconventie tussen talen (% in Python ≠ % in C voor negatieve getallen).

Hoe bereken je a mod b

  1. 1

    Voer deeltal (a) en deler (b) in

    Elk getal; decimalen en negatieve getallen zijn toegestaan.

  2. 2

    Kies de tekenconventie

    Afgekapte deling (C, Java, Go), naar beneden afgeronde deling (Python, Ruby, wiskundige conventie).

  3. 3

    Lees het quotiënt en de rest af

    a = q·b + r, met de gekozen regel voor het teken van r.

  4. 4

    Bekijk de wiskundige uitdrukking

    Ingevulde waarden maken elke stap zichtbaar.

Twee conventies voor negatieve getallen

Voor positieve operanden zijn alle conventies het eens: 17 mod 5 = 2. Voor negatieve getallen verschillen de talen:

Taal -17 mod 5 Conventie
Python, Ruby 3 Naar beneden afgerond
C, Java, Go, JS -2 Afgekapt
Wiskundeboeken 3 Naar beneden afgerond (meestal)

Naar beneden afgeronde deling: het quotiënt wordt afgerond richting −∞. De rest heeft altijd het teken van de deler: hetzelfde teken als b. Afgekapte deling: het quotiënt wordt afgerond richting nul. De rest heeft het teken van het deeltal: hetzelfde teken als a.

Voor a = -17, b = 5:

  • Afgekapt: q = -3 (afgerond richting 0), r = -17 − (-3)·5 = -2.
  • Naar beneden afgerond: q = -4 (afgerond richting -∞), r = -17 − (-4)·5 = 3.

Beide zijn correct binnen hun conventie. Kies degene die bij jouw taal past.

Waar modulo opduikt

  • Tijd. Minuten in een uur, dagen van de week, seconden in een dag, allemaal modulo-rekenkunde.
  • Hashtabellen. hash(key) mod table_size kiest een bucket.
  • Round-robin-planning. task_i mod worker_count wijst werk toe.
  • Cryptografie. RSA en Diffie-Hellman zijn gebouwd op mod n met enorme priemgetallen.
  • Elke N-de rij. In SQL: WHERE id % 3 = 0.
  • Even/oneven-controle. n mod 2 == 0 betekent even.
  • Afwisselende patronen. Rijstreping, om en om een element inkleuren.
  • Circulaire buffers. (index + 1) mod size loopt rond.

Nuttige identiteiten

  • (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 kan worden berekend met snelle modulaire machtsverheffing in O(log k), cruciaal voor cryptografie met grote getallen.
  • a mod 1 = 0 voor elk geheel getal a.
  • a mod a = 0.

Decimale modulo

Voor reële getallen is de natuurlijke definitie a mod b = a − b · floor(a/b). 7.5 mod 2.5 = 0 omdat 7,5 een exact veelvoud is. 7.6 mod 2.5 = 0.1.

De %-operator van JavaScript werkt op reële getallen; fmod van Python doet afgekapte reële modulo; % van Python doet naar beneden afgeronde reële modulo.

Uitgewerkte voorbeelden

  • 100 mod 7: 100 = 14·7 + 2, dus rest 2.
  • 25 mod 4: 25 = 6·4 + 1, dus rest 1.
  • -10 mod 3 (naar beneden afgerond): -10 = -4·3 + 2, rest 2. (Afgekapt zou -1 geven.)
  • 17.5 mod 5: 17,5 = 3·5 + 2,5, rest 2,5.

Veelgestelde vragen

Meestal zijn het synoniemen. Formeel impliceert “modulo” vaak de wiskundige conventie (naar beneden afgerond), terwijl “remainder” (rest) vaak verwijst naar de afgekapte variant (C-stijl). De namen sijpelen door in taaldocumentatie; als het ertoe doet, benoem dan expliciet de conventie.

Python volgt de wiskundige conventie (naar beneden afgerond), waardoor het teken van de rest overeenkomt met dat van de deler. C volgt de hardware-ALU-conventie (afgekapt), waarbij het teken van de rest overeenkomt met dat van het deeltal. Geen van beide is fout; het zijn verschillende keuzes.

Nee, delen door nul is niet gedefinieerd. De calculator geeft een fout voor b = 0.

Meestal wel. Controleer de specificatie van je taal voor de behandeling van negatieve getallen, Python en Ruby verschillen van C, Java, Go en JavaScript.

Gebruik voor RSA-achtige wiskunde met 2048-bits getallen een speciale bibliotheek (pow(a, b, n) van Python, BigInteger.modPow van Java). Deze calculator verwerkt alledaagse waarden, geen waarden op cryptografisch niveau.

Gerelateerde tools

Tool beschikbaar in andere talen