Calcolatrice online

L'operazione di modulo restituisce il resto di una divisione. Con i numeri positivi tutti concordano: 17 mod 5 = 2. Ma con i numeri negativi, i linguaggi e i matematici divergono. La convenzione matematica definisce a mod b in modo che il risultato sia sempre nell'intervallo [0, |b|), quindi -7 mod 3 = 2. La convenzione di C/Go/JavaScript utilizza la divisione troncata, per cui il resto prende il segno del dividendo, il che significa -7 % 3 = -1. Questa calcolatrice matematica mostra entrambe le opzioni per consentirti di scegliere quella prevista dal tuo contesto. Supporta anche moduli in virgola mobile (utilizzati nella conversione di angoli, aritmetica degli orologi e nell'elaborazione dei segnali) e spiega ogni passaggio del calcolo.

star 4.8
auto_awesome AI
New

Calcolatrice online 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

    • • Usa il modulo matematico (arrotondamento per difetto) per l'aritmetica modulare, l'hashing e la conversione di angoli
    • • Usa il modulo in stile C (troncato) quando vuoi replicare il comportamento di C, C++, Go, Java o JavaScript
    • • Per a e b positivi le due convenzioni coincidono, quindi la distinzione è importante solo con i numeri negativi
    • • Il modulo per zero non è definito: il divisore deve essere diverso da zero
    • • L'operatore % di Python utilizza il modulo matematico (con arrotondamento per difetto): -7 % 3 = 2

    The Formula

    Il modulo matematico utilizza la divisione con arrotondamento per difetto (floor), quindi il resto è sempre 0 <= r < |b|. Il modulo in stile C utilizza la divisione troncata, quindi il resto ha lo stesso segno del dividendo.

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

    lightbulb Variables Explained

    • a Dividendo (il numero da dividere)
    • b Divisore (il modulo)
    • q Quoziente (arrotondato per difetto o troncato)
    • r Resto / risultato del modulo

    tips_and_updates Pro Tips

    1

    Usa il modulo matematico (arrotondamento per difetto) per l'aritmetica modulare, l'hashing e la conversione di angoli

    2

    Usa il modulo in stile C (troncato) quando vuoi replicare il comportamento di C, C++, Go, Java o JavaScript

    3

    Per a e b positivi le due convenzioni coincidono, quindi la distinzione è importante solo con i numeri negativi

    4

    Il modulo per zero non è definito: il divisore deve essere diverso da zero

    5

    L'operatore % di Python utilizza il modulo matematico (con arrotondamento per difetto): -7 % 3 = 2

    L'operazione di modulo (spesso scritta come a mod b o a % b) restituisce il resto dopo aver diviso un numero per un altro ed è una delle operazioni più utilizzate in matematica e informatica. Una **calcolatrice online** calcola questo resto per qualsiasi dividendo e divisore, inclusi numeri negativi e decimali, mostrando il processo di divisione passo dopo passo. Per i numeri positivi il risultato è immediato: 17 mod 5 è uguale a 2 perché 17 diviso 5 dà 3 con resto 2. Tuttavia, i numeri negativi introducono una distinzione fondamentale tra due convenzioni: la convenzione matematica (per difetto) restituisce sempre un risultato non negativo, mentre la convenzione di programmazione (troncata) utilizzata in C, Java e JavaScript preserva il segno del dividendo. Ciò significa che meno 7 mod 3 fa 2 in matematica ma meno 1 nella maggior parte dei linguaggi di programmazione. Comprendere entrambe le convenzioni è essenziale per programmatori, crittografi e chiunque lavori con pattern ciclici, aritmetica degli orologi o funzioni di hash.

    Modulo in matematica e programmazione: il problema dei numeri negativi

    La divergenza tra le convenzioni di modulo in matematica e programmazione deriva da come gestiscono la divisione tra interi. Il modulo matematico utilizza la divisione con floor (arrotondamento verso l'infinito negativo), quindi il quoziente di meno 7 diviso 3 si arrotonda a meno 3, dando un resto di meno 7 meno 3 volte meno 3 uguale a 2. Il modulo di programmazione utilizza la divisione troncata (arrotondamento verso lo zero), quindi il quoziente si tronca a meno 2, dando un resto di meno 7 meno 3 volte meno 2 uguale a meno 1.

    Python utilizza unicamente il modulo matematico (per difetto), rispecchiando la convenzione prevista nell'algebra astratta e nella teoria dei numeri. C, C++, Java, JavaScript, Go e Rust usano il modulo troncato. Ruby e Perl seguono il comportamento di Python.

    Questa distinzione è importante nel codice reale: convertire un angolo negativo nell'intervallo 0-359 richiede il modulo matematico (meno 90 mod 360 dà 270), ma l'operatore percentuale di C restituisce meno 90, richiedendo un aggiustamento manuale.

    Applicazioni pratiche dell'aritmetica modulare

    L'aritmetica modulare è alla base di un numero sorprendente di sistemi del mondo reale:

    • L'aritmetica dell'orologio è modulare: le 10:00 più 5 ore fanno le 15:00 perché 15 mod 12 fa 3.
    • I giorni della settimana ciclano con modulo 7.
    • Le tabelle hash usano il modulo per associare le chiavi agli indici dei bucket: hash(key) mod table_size.
    • Gli algoritmi crittografici come RSA dipendono interamente dall'esponenziazione modulare e dalla difficoltà di trovare inversi modulari per numeri primi grandi.
    • Le cifre di controllo di ISBN e carte di credito utilizzano operazioni di modulo per il rilevamento degli errori (l'ISBN-13 usa il mod 10, l'algoritmo di Luhn per le carte di credito).
    • Le strutture dati cicliche come i buffer circolari usano il modulo per far ripartire gli indici degli array: next_index equivale a (corrente più 1) mod buffer_size.

    Anche compiti semplici come determinare se un numero è pari (n mod 2 è uguale a 0) o estrarre l'ultima cifra (n mod 10) si affidano al modulo.

    Modulo con i decimali e casi speciali

    L'operazione di modulo si estende naturalmente ai numeri reali usando la stessa formula: r è uguale a b volte floor(a diviso b). Ad esempio, 5.5 mod 2 è uguale a 1.5 perché floor(5.5/2) fa 2, e 5.5 meno 2 volte 2 fa 1.5.

    Il modulo in virgola mobile è ampiamente utilizzato nella computer grafica per il texture wrapping (u mod 1.0 mappa qualsiasi coordinata nell'intervallo da 0 a 1), la normalizzazione degli angoli (theta mod 360 mantiene gli angoli entro una rotazione completa) e l'elaborazione dei segnali per i calcoli di fase.

    Casi limite importanti:

    • Il modulo per zero non è definito e causerà errori di divisione per zero in qualsiasi linguaggio.
    • Il modulo in cui il dividendo è zero restituisce sempre zero (0 mod b fa 0 per qualsiasi b diverso da zero).
    • Quando entrambi gli operandi sono positivi e il dividendo è più piccolo del divisore, il risultato è uguale al dividendo (3 mod 7 fa 3).

    Queste proprietà rendono il modulo prevedibile per i numeri positivi ma richiedono una gestione attenta in caso di ingressi negativi o decimali.

    Cos'è l'operazione di modulo e come funziona?

    L'operazione di modulo restituisce il resto che rimane dopo aver diviso un intero per un altro, scritto come a mod b o a % b. Dato un dividendo a e un divisore b diverso da zero, risponde alla domanda: dopo aver sottratto da a quante più copie intere possibili di b, cosa rimane?

    Ad esempio, 17 mod 5 = 2 perché il 5 entra nel 17 tre volte (15), lasciando 2. Secondo Wolfram MathWorld, la funzione modulo è formalmente definita come il resto di a diviso per b e soddisfa sempre 0 <= r < |b| secondo la convenzione matematica.

    Questa semplice operazione è un pilastro della teoria dei numeri, della crittografia e della programmazione di tutti i giorni, consentendo di rilevare la divisibilità, racchiudere i valori in un intervallo fisso e costruire comportamenti ciclici.

    La formula del modulo: r = a - b * floor(a/b)

    Per calcolare a mod b a mano, usa la formula r = a - b * q, dove q è il quoziente. Le due convenzioni differiscono solo nel modo in cui viene calcolato q. Il modulo matematico (per difetto) imposta q = floor(a/b), arrotondando verso l'infinito negativo; il modulo in stile C (troncato) imposta q = trunc(a/b), arrotondando verso lo zero.

    Analisi di ogni caso:

    • Per 17 mod 5: floor(17/5) = 3, quindi r = 17 - 5*3 = 2.
    • Per -7 mod 3 (matematica): floor(-7/3) = floor(-2.33) = -3, quindi r = -7 - 3*(-3) = 2.
    • Per -7 % 3 (stile C): trunc(-2.33) = -2, quindi r = -7 - 3*(-2) = -1.

    Come nota la NIST Digital Library of Mathematical Functions, il floor e il troncamento coincidono per gli operandi positivi, motivo per cui entrambe le convenzioni concordano quando sia a che b sono positivi.

    Come calcolare il modulo passo dopo passo con un esempio pratico

    Calcolare a mod b è un processo in quattro fasi. Consideriamo 23 mod 6.

    • Passo 1: dividi, 23 / 6 = 3.833.
    • Passo 2: prendi il quoziente come numero intero, floor(3.833) = 3.
    • Passo 3: rimoltiplica, 3 * 6 = 18.
    • Passo 4: sottrai, 23 - 18 = 5.

    Quindi 23 mod 6 = 5, e infatti 23 = 6*3 + 5. Per un dividendo negativo come -23 mod 6 (convenzione matematica), floor(-23/6) = floor(-3.833) = -4, quindi -23 - 6*(-4) = -23 + 24 = 1.

    Khan Academy insegna questo stesso metodo di sottrazione quando introduce l'aritmetica modulare, sottolineando che il resto deve essere sempre di grandezza inferiore al divisore. Verifica il tuo risultato controllando che a sia uguale a b per il quoziente più il resto.

    Cos'è l'aritmetica modulare e la congruenza?

    L'aritmetica modulare è un sistema di calcolo per numeri interi in cui i numeri si azzerano e ripartono dopo aver raggiunto un valore fisso chiamato modulo. Due interi a e b si dicono congruenti modulo n, scritti come a ≡ b (mod n), quando lasciano lo stesso resto dopo la divisione per n, o equivalentemente quando n divide la loro differenza.

    Ad esempio, 17 ≡ 5 (mod 12) perché entrambi lasciano il resto di 5 se diviso per 12, motivo per cui un orario delle 17:00 viene letto come le 5 del pomeriggio su un orologio a 12 ore.

    L'Enciclopedia Britannica descrive l'aritmetica modulare come un'aritmetica su un insieme finito di residui, ed è stata formalizzata da Carl Friedrich Gauss nella sua opera del 1801 *Disquisitiones Arithmeticae*. Le relazioni di congruenza preservano l'addizione e la moltiplicazione, rendendole la spina dorsale algebrica della crittografia e dei codici di rilevamento degli errori.

    Usi nel mondo reale del modulo nella programmazione e nella vita quotidiana

    Il modulo appare molto più spesso di quanto la maggior parte delle persone realizzi:

    • Per verificare se un numero è pari, controlla n mod 2 == 0; per estrarre l'ultima cifra di un numero intero, calcola n mod 10.
    • I buffer circolari e le code circolari racchiudono la loro posizione di scrittura con index = (index + 1) mod capacity, in modo che il puntatore non esca mai dalla fine dell'array.
    • Le tabelle hash mappano le chiavi negli slot usando hash mod table_size.
    • La matematica del tempo e del calendario è modulare: il giorno della settimana avanza di (day + shift) mod 7 e gli orologi girano su mod 12 o mod 24.
    • Le cifre di controllo per ISBN-13 (mod 10) e i numeri di routing bancari, oltre all'algoritmo di Luhn alla base della validazione delle carte di credito, si affidano tutti al modulo per individuare errori di battitura.
    • Nella crittografia, l'esponenziazione modulare alimenta RSA e lo scambio di chiavi Diffie-Hellman.

    Proprietà chiave e identità dell'operazione di modulo

    Il modulo rispetta diverse utili proprietà algebriche che semplificano il calcolo e le dimostrazioni.

    Le regole di tipo distributivo per le congruenze stabiliscono che (a + b) mod n = ((a mod n) + (b mod n)) mod n, e analogamente (a * b) mod n = ((a mod n) * (b mod n)) mod n; queste regole permettono di ridurre grandi valori intermedi prima della moltiplicazione, prevenendo il traboccamento dei dati (overflow).

    Identità chiave da ricordare:

    • Se il dividendo è minore del divisore e sono entrambi positivi, il risultato è semplicemente il dividendo, quindi 3 mod 7 = 3.
    • Un dividendo pari a zero dà sempre zero: 0 mod b = 0.
    • Qualsiasi multiplo del modulo dà zero, quindi 20 mod 5 = 0.
    • Il risultato di un mod b è sempre strettamente minore di |b| secondo la convenzione matematica.

    Queste identità, catalogate in risorse come la voce sulla congruenza di Wolfram MathWorld, rendono la riduzione modulare sia rapida che prevedibile.

    Errori comuni nel calcolo del modulo

    Attenzione a questi errori frequenti:

    • Dare per scontato che ogni linguaggio restituisca lo stesso segno per operandi negativi. Il -7 % 3 di Python restituisce 2, ma Java, C e JavaScript restituiscono -1; perciò copiare una formula tra linguaggi diversi senza fare aggiustamenti può introdurre bug difficili da trovare, soprattutto nella gestione degli angoli o nell'hashing.
    • Tentare di fare il modulo per zero, operazione non definita che genera un errore di runtime in qualsiasi linguaggio; bisogna sempre verificare che il divisore sia diverso da zero.
    • Confondere la direzione di arrotondamento del quoziente, dimenticando che la divisione con arrotondamento per difetto e quella troncata divergono con i numeri negativi.
    • Applicare il modulo intero a valori a virgola mobile senza considerare l'arrotondamento può produrre piccoli errori; 5.5 mod 2 = 1.5 esatto, ma la deriva dei numeri decimali accumulata nel tempo potrebbe restituire 1.4999999.
    • Usare n mod 2 == 1 per rilevare i numeri dispari non funziona con i negativi nei linguaggi con divisione troncata, dove -3 % 2 = -1; è meglio usare la verifica n mod 2 != 0.

    In che modo il modulo differisce tra i linguaggi di programmazione

    Poiché il segno del resto per gli operandi negativi è una scelta di progettazione, i linguaggi si dividono in due gruppi.

    • Il modulo troncato (segno del dividendo) è usato da C, C++, C#, Java, JavaScript, Go, Rust e Swift, quindi -7 % 3 viene valutato come -1 in tutti questi ambienti.
    • Il modulo con arrotondamento per difetto / floored (segno del divisore, sempre non negativo per divisori positivi) è usato da Python, Ruby e Perl, quindi -7 % 3 viene valutato come 2.

    Alcuni linguaggi offrono entrambe le opzioni: Python ha math.fmod per il risultato troncato in stile C, e molte librerie standard mettono a disposizione un'apposita funzione floor-mod come Math.floorMod di Java, che restituisce 2 per floorMod(-7, 3).

    Quando si converte del codice numerico, bisogna sempre verificare quale convenzione usi il linguaggio di destinazione. Questa calcolatrice online mostra fianco a fianco sia il risultato matematico (con arrotondamento per difetto) che quello in stile C (troncato), così puoi adattarti a ciò che il tuo ambiente si aspetta.

    Frequently Asked Questions

    sell

    Tags