Calculator Modulo

Operația de modulo returnează restul unei împărțiri. Pentru numere pozitive toată lumea este de acord: 17 mod 5 = 2. Dar pentru numere negative, limbajele de programare și matematicienii diferă. Convenția matematică definește a mod b astfel încât rezultatul să fie întotdeauna în intervalul [0, |b|) — deci -7 mod 3 = 2. Convenția C/Go/JavaScript folosește împărțirea truncată, astfel încât restul preia semnul deîmpărțitului — ceea ce înseamnă că -7 % 3 = -1. Acest calculator le afișează pe ambele pentru a putea alege varianta așteptată de domeniul tău. De asemenea, acceptă modulo cu virgulă mobilă (folosit în transformarea unghiurilor, aritmetica ceasului și procesarea semnalelor) și explică fiecare pas al calculului.

star 4.8
auto_awesome AI
New

Calculator Modulo calculator

percent a mod b

The number being divided. Integers or decimals, positive or negative.

The modulus. Must be non-zero.

analytics Result

Modulo (math, floored)
2
Always in range [0, |b|)
Remainder (C-style, truncated) 2

Sign follows dividend. Matches C, C++, Go, Java, JavaScript (%).

Quotient (floor)
3
Quotient (trunc)
3
Step by step

    tips_and_updates Tips

    • • Folosește modulo matematic (rotunjit în jos) pentru aritmetică modulară, hashing și normalizarea unghiurilor
    • • Folosește modulo în stil C (truncat) când vrei să potrivești comportamentul din C, C++, Go, Java sau JavaScript
    • • Pentru a și b pozitive, cele două convenții coincid, așa că distincția contează doar pentru numere negative
    • • Modulo la zero nu este definit — împărțitorul trebuie să fie diferit de zero
    • • Operatorul % din Python folosește modulo matematic (rotunjit în jos): -7 % 3 = 2

    The Formula

    Modulo matematic folosește împărțirea cu rotunjire în jos, astfel încât restul este întotdeauna 0 <= r < |b|. Modulo în stil C folosește împărțirea trunchiată, astfel încât restul are același semn ca deîmpărțitul.

    r = a - b * q, where q = floor(a/b) (math) or trunc(a/b) (C-style)

    lightbulb Variables Explained

    • a Deîmpărțit (numărul care este împărțit)
    • b Împărțitor (modulul)
    • q Cât (rotunjit în jos sau trunchiat)
    • r Rest / rezultat modulo

    tips_and_updates Pro Tips

    1

    Folosește modulo matematic (rotunjit în jos) pentru aritmetică modulară, hashing și normalizarea unghiurilor

    2

    Folosește modulo în stil C (truncat) când vrei să potrivești comportamentul din C, C++, Go, Java sau JavaScript

    3

    Pentru a și b pozitive, cele două convenții coincid, așa că distincția contează doar pentru numere negative

    4

    Modulo la zero nu este definit — împărțitorul trebuie să fie diferit de zero

    5

    Operatorul % din Python folosește modulo matematic (rotunjit în jos): -7 % 3 = 2

    Operația de modulo (scrisă adesea ca a mod b sau a % b) returnează restul după împărțirea unui număr la altul și este una dintre cele mai utilizate operații în matematică și știința calculatoarelor. Un calculator de ore, în contextul său matematic, sau un instrument dedicat calculează acest rest pentru orice deîmpărțit și împărțitor, inclusiv numere negative și zecimale, arătând în același timp procesul de împărțire pas cu pas. Pentru numere pozitive, rezultatul este simplu: 17 mod 5 este egal cu 2 deoarece 17 împărțit la 5 este 3 cu restul 2. Cu toate acestea, numerele negative introduc o distincție critică între două convenții: convenția matematică (rotunjită în jos) returnează întotdeauna un rezultat negativ sau zero, în timp ce convenția de programare (trunchiată) utilizată în C, Java și JavaScript păstrează semnul deîmpărțitului. Aceasta înseamnă că minus 7 mod 3 este egal cu 2 în matematică, dar cu minus 1 în majoritatea limbajelor de programare. Înțelegerea ambelor convenții este esențială pentru programatori, criptografi și oricine lucrează cu modele ciclice, aritmetica ceasului sau funcții de dispersie (hash).

    Modulo în matematică versus programare: Problema numerelor negative

    Divergența dintre convențiile modulo din matematică și programare provine din modul în care acestea gestionează împărțirea între întregi. Modulo matematic folosește împărțirea cu rotunjire în jos (rotunjire spre infinitul negativ), astfel încât câtul dintre minus 7 împărțit la 3 se rotunjește în jos la minus 3, dând restul minus 7 minus 3 ori minus 3 egal 2. Modulo în programare folosește împărțirea trunchiată (rotunjire spre zero), astfel încât câtul se trunchiază la minus 2, dând restul minus 7 minus 3 ori minus 2 egal minus 1.

    Python folosește în mod unic modulo matematic (rotunjit în jos), potrivindu-se cu convenția așteptată în algebră abstractă și teoria numerelor. C, C++, Java, JavaScript, Go și Rust folosesc modulo trunchiat. Ruby și Perl respectă comportamentul lui Python.

    Această distincție contează în codul real: conversia unui unghi negativ la intervalul 0-359 necesită modulo matematic (minus 90 mod 360 egal 270), dar operatorul procent din C dă minus 90, necesitând o ajustare manuală.

    Aplicații practice ale aritmeticii modulare

    Aritmetica modulară stă la baza a surprinzător de multe sisteme din lumea reală:

    • Aritmetica ceasului este modulară: ora 10 AM plus 5 ore înseamnă ora 3 PM deoarece 15 mod 12 este egal cu 3.
    • Zilele săptămânii se rotesc ciclic cu modulo 7.
    • Tabelele hash folosesc modulo pentru a mapa cheile la indicii de bucket: hash(key) mod table_size.
    • Algoritmii criptografici precum RSA depind în totalitate de exponențierea modulară și de dificultatea găsirii inverselor modulare pentru numere prime mari.
    • Cifrele de control ISBN și carduri bancare folosesc operații modulo pentru detectarea erorilor (ISBN-13 folosește mod 10, algoritmul Luhn pentru carduri de credit).
    • Structurile de date ciclice, cum ar fi bufferele circulare, folosesc modulo pentru a reține indicii array-ului în limite: next_index egal cu (current plus 1) mod buffer_size.

    Chiar și sarcini simple, cum ar fi determinarea dacă un număr este par (n mod 2 egal cu 0) sau extragerea ultimei cifre (n mod 10), se bazează pe modulo.

    Modulo cu zecimale și cazuri speciale

    Operația de modulo se extinde în mod natural la numere reale folosind aceeași formulă: r egal cu a minus b ori floor(a împărțit la b). De exemplu, 5.5 mod 2 este egal cu 1.5 deoarece floor(5.5/2) este 2, iar 5.5 minus 2 ori 2 este egal cu 1.5.

    Modulo în virgulă mobilă este utilizat pe scară largă în grafica pe calculator pentru maparea texturilor (u mod 1.0 mapează orice coordonată în intervalul 0 la 1), normalizarea unghiurilor (theta mod 360 menține unghiurile în cadrul unei rotații complete) și procesarea semnalului pentru calcule de fază.

    Cazuri limită importante:

    • Modulo cu zero este nedefinit și va cauza erori de împărțire la zero în orice limbaj.
    • Modulo în care deîmpărțitul este zero returnează întotdeauna zero (0 mod b egal 0 pentru orice b diferit de zero).
    • Când ambii operanzi sunt pozitivi, iar deîmpărțitul este mai mic decât împărțitorul, rezultatul este egal cu deîmpărțitul (3 mod 7 egal 3).

    Aceste proprietăți fac ca modulo să fie previzibil pentru numere pozitive, dar necesită o gestionare atentă în cazul intrărilor negative sau zecimale.

    Ce este operația de modulo și cum funcționează?

    Operația de modulo returnează restul rămas după împărțirea unui întreg la altul, scrisă ca a mod b sau a % b. Având un deîmpărțit a și un împărțitor b diferit de zero, ea răspunde la întrebare: după ce scădem din a cât mai multe copii întregi ale lui b cu putință, ce rămâne?

    De exemplu, 17 mod 5 = 2 deoarece 5 încape în 17 de trei ori (15), lăsând 2. Conform Wolfram MathWorld, funcția modulo este definită oficial ca restul lui a împărțit la b și respectă întotdeauna 0 <= r < |b| în cadrul convenției matematice.

    Această operație simplă este piatra de temelie a teoriei numerelor, criptografiei și programării de zi cu zi, permițându-vă să detectați divizibilitatea, să încadrați valorile într-un interval fix și să construiți un comportament ciclic.

    Formula pentru Modulo: r = a - b * floor(a/b)

    Pentru a calcula a mod b de mână, folosiți formula r = a - b * q, unde q este câtul. Cele două convenții difere doar prin modul în care este calculat q. Modulo matematic (rotunjit în jos) setează q = floor(a/b), rotunjind spre infinitul negativ; modulo în stil C (trunchiat) setează q = trunc(a/b), rotunjind spre zero.

    Analiza fiecărui caz în parte:

    • Pentru 17 mod 5: floor(17/5) = 3, deci r = 17 - 5*3 = 2.
    • Pentru -7 mod 3 (matematic): floor(-7/3) = floor(-2.33) = -3, deci r = -7 - 3*(-3) = 2.
    • Pentru -7 % 3 (stil C): trunc(-2.33) = -2, deci r = -7 - 3*(-2) = -1.

    După cum menționează NIST Digital Library of Mathematical Functions, rotunjirea în jos și trunchierea coincid pentru operanzii pozitivi, motiv pentru care ambele convenții sunt de acord atunci când a și b sunt ambele pozitive.

    Cum se calculează modulo pas cu pas cu un exemplu practic

    Calculul lui a mod b este un proces în patru pași. Să luăm în considerare 23 mod 6.

    • Pasul 1: împărțirea, 23 / 6 = 3.833.
    • Pasul 2: se ia câtul ca număr întreg, floor(3.833) = 3.
    • Pasul 3: înmulțirea înapoi, 3 * 6 = 18.
    • Pasul 4: scăderea, 23 - 18 = 5.

    Deci 23 mod 6 = 5 și într-adevăr 23 = 6*3 + 5. Pentru un deîmpărțit negativ precum -23 mod 6 (convenția matematică), floor(-23/6) = floor(-3.833) = -4, deci -23 - 6*(-4) = -23 + 24 = 1.

    Khan Academy predă aceeași metodă de scădere atunci când introduce aritmetica modulară, subliniind că restul trebuie să fie întotdeauna mai mic în valoare absolută decât împărțitorul. Verificați-vă răspunsul asigurându-vă că a este egal cu b înmulțit cu câtul plus restul.

    Ce este aritmetica modulară și congruența?

    Aritmetica modulară este un sistem de aritmetică pentru numere întregi în care numerele se reiau ciclic după ce ating o valoare fixă numită modul. Două numere întregi a și b se spune că sunt congruente modulo n, scrise a ≡ b (mod n), atunci când lăsând același rest la împărțirea cu n, sau în mod echivalent atunci când n divide diferența lor.

    De exemplu, 17 ≡ 5 (mod 12) deoarece ambele lasă restul 5 atunci când sunt împărțite la 12, motiv pentru care o oră de 17:00 se citește ca 5 PM pe un ceas de 12 ore.

    Encyclopaedia Britannica descrie aritmetica modulară ca fiind aritmetică pe un set finit de resturi și a fost formalizată de Carl Friedrich Gauss în lucrarea sa din 1801 Disquisitiones Arithmeticae. Relațiile de congruență păstrează adunarea și înmulțirea, făcându-le coloana vertebrală algebrică a criptografiei și a codurilor de detectare a erorilor.

    Utilizări în lumea reală ale lui modulo în programare și viața de zi cu zi

    Modulo apare mult mai des decât își dau seama majoritatea oamenilor:

    • Pentru a testa dacă un număr este par, verificați n mod 2 == 0; pentru a extrage ultima cifră a unui număr întreg, calculați n mod 10.
    • Bufferele circulare și cozile rotative își încheie poziția de scriere cu index = (index + 1) mod capacity, astfel încât indicatorul să nu iasă niciodată din afara array-ului.
    • Tabelele hash mapează cheile în sloturi folosind hash mod table_size.
    • Matematica timpului și a calendarului este modulară: ziua săptămânii avansează cu (day + shift) mod 7, iar ceasurile funcționează pe mod 12 sau mod 24.
    • Cifrele de control pentru ISBN-13 (mod 10) și numerele de rutare bancară, plus algoritmul Luhn din spatele validării cardurilor de credit, se bazează pe modulo pentru a prinde erorile de tastare.
    • În criptografie, exponențierea modulară alimentează RSA și schimbul de chei Diffie-Hellman.

    Proprietăți cheie și identități ale operației de modulo

    Operația modulo respectă mai multe proprietăți algebrice utile care simplifică calculul și demonstrațiile.

    Regulile asemănătoare distributivității pentru congruențe stipulează că (a + b) mod n = ((a mod n) + (b mod n)) mod n și, în mod similar, (a * b) mod n = ((a mod n) * (b mod n)) mod n; acestea vă permit să reduceți valorile intermediare mari înainte de înmulțire, prevenind astfel depășirea capacității (overflow).

    Identități cheie de reținut:

    • Dacă deîmpărțitului este mai mic decât împărțitorul și ambele sunt pozitive, rezultatul este pur și simplu deîmpărțitul, deci 3 mod 7 = 3.
    • Un deîmpărțit egal cu zero dă întotdeauna zero: 0 mod b = 0.
    • Orice multiplu al modulului dă zero, deci 20 mod 5 = 0.
    • Rezultatul unui mod b este întotdeauna strict mai mic decât |b| conform convenției matematice.

    Aceste identități, catalogate în resurse precum intrarea despre congruențe din Wolfram MathWorld, fac reducerea modulară atât rapidă, cât și predictibilă.

    Greșeli comune la calculul modulo

    Feriți-vă de aceste erori frecvente:

    • Presupunerea că fiecare limbaj returnează același semn pentru operanzii negativi. -7 % 3 în Python dă 2, dar în Java, C și JavaScript dă -1; prin urmare, copierea unei formule între limbaje fără ajustare poate introduce buguri subtile, în special la înfășurarea unghiurilor sau la hashing.
    • Încercarea de a face modulo la zero, ceea ce este nedefinit și generează o eroare de execuție în orice limbaj; validați întotdeauna că împărțitorul nu este zero.
    • Confundarea direcției de rotunjire a câtului, uitând că împărțirea cu rotunjire în jos (floored) și cea truncată diferă pentru numere negative.
    • Aplicarea operației modulo pe numere întregi la valori în virgulă mobilă fără a lua în considerare rotunjirea poate produce erori minuscule; 5.5 mod 2 = 1.5 exact, dar decalajul acumulat în virgulă mobilă poate da 1.4999999.
    • Folosirea n mod 2 == 1 pentru a detecta numere impare eșuează pentru numere negative în limbajele cu împărțire truncată, unde -3 % 2 = -1; testați în schimb n mod 2 != 0.

    Cum diferă operația modulo între limbajele de programare

    Deoarece semnul restului pentru operanzi negativi este o opțiune de proiectare, limbajele se împart în două tabere.

    • Modulo trunchiat (cu semnul deîmpărțitului) este folosit de C, C++, C#, Java, JavaScript, Go, Rust și Swift, astfel încât -7 % 3 se evaluează la -1 în toate acestea.
    • Modulo cu rotunjire în jos / floored (cu semnul împărțitului, întotdeauna non-negativ pentru împărțitori pozitivi) este folosit de Python, Ruby și Perl, astfel încât -7 % 3 se evaluează la 2.

    Unele limbaje le oferă pe ambele: Python are math.fmod pentru rezultatul trunchiat în stil C, iar multe biblioteci standard expun o funcție dedicată pentru modulo cu rotunjire în jos, cum ar fi Math.floorMod din Java, care returnează 2 pentru floorMod(-7, 3).

    Atunci când portați cod numeric, confirmați întotdeauna ce convenție folosește limbajul țintă. Acest calculator arată atât rezultatul matematic (cu rotunjire în jos), cât și pe cel în stil C (trunchiat) unul lângă altul, astfel încât să îl puteți potrivi pe cel așteptat de mediul dvs.

    Frequently Asked Questions

    sell

    Tags