Risposte:
Il risultato di una divisione modulo è il resto di una divisione intera dei numeri dati.
Questo significa:
27 / 16 = 1, remainder 11
=> 27 mod 16 = 11
Altri esempi:
30 / 3 = 10, remainder 0
=> 30 mod 3 = 0
35 / 3 = 11, remainder 2
=> 35 mod 3 = 2
La maggior parte delle spiegazioni salta un passaggio importante, riempiamo il vuoto utilizzando un altro esempio.
Dato quanto segue:
Dividend: 16
Divisor: 6
La funzione modulo ha questo aspetto:
16 % 6 = 4
Determiniamo perché questo è.
Innanzitutto, esegui la divisione di numeri interi , che è simile alla divisione normale, tranne per il fatto che qualsiasi numero frazionario (noto anche come resto) viene scartato:
16 / 6 = 2
Quindi, moltiplica il risultato della divisione precedente ( 2
) con il nostro divisore ( 6
):
2 * 6 = 12
Infine, sottrai il risultato della moltiplicazione sopra ( 12
) dal nostro dividendo ( 16
):
16 - 12 = 4
Il risultato di questa sottrazione, 4
il resto , è lo stesso risultato del nostro modulo sopra!
16 // 6 >>> 2
e16 / 6 >>> 2.6666666666666665
Forse l'esempio con un orologio potrebbe aiutarti a capire il modulo.
Un uso familiare dell'aritmetica modulare è il suo utilizzo nell'orologio di 12 ore, in cui il giorno è diviso in due periodi di 12 ore.
Diciamo che al momento abbiamo questo orario: 15:00
Ma potresti anche dire che sono le 15:00
Questo è esattamente ciò che fa il modulo:
15 / 12 = 1, remainder 3
Trovi questo esempio meglio spiegato su wikipedia: Wikipedia Modulo Article
La semplice formula per il calcolo del modulo è: -
[Dividend-{(Dividend/Divisor)*Divisor}]
Quindi, 27% 16: -
27- {(27/16) * 16}
27- {1} 16 *
Risposta = 11
Nota :
Tutti i calcoli sono con numeri interi. In caso di quoziente decimale, la parte dopo il decimale deve essere ignorata / troncata.
es: 27/16 = 1,6875 è da prendere come solo 1 nella formula sopra menzionata. 0.6875 viene ignorato.
I compilatori di linguaggi informatici trattano allo stesso modo un numero intero con parte decimale (troncandolo dopo il decimale)
L'operatore modulo prende un'istruzione di divisione e restituisce tutto ciò che resta da quel calcolo, i dati "rimanenti", per così dire, come 13/5 = 2. Il che significa che ne rimangono 3 o restano da quel calcolo. Perché? perché 2 * 5 = 10. Quindi, 13 - 10 = 3.
L'operatore modulo esegue tutti i calcoli per te, 13% 5 = 3.
Molto semplice: a % b
è definito come il resto della divisione di a
per b
.
Consulta l' articolo di wikipedia per ulteriori esempi.
Vorrei aggiungere un'altra cosa:
è facile calcolare il modulo quando il dividendo è maggiore / maggiore del divisore
dividendo = 5 divisore = 3
5% 3 = 2
3)5(1
3
-----
2
ma cosa succede se il divisore è inferiore al dividendo
dividendo = 3 divisore = 5
3% 5 = 3 ?? Come
Questo perché, poiché 5 non può dividere 3 direttamente, modulo sarà ciò che è il dividendo
Spero che questi semplici passaggi ti siano d'aiuto:
20 % 3 = 2
20 / 3 = 6
; non includere il .6667
- ignoralo3 * 6 = 18
20 - 18 = 2
, che è il resto del moduloPiù facile quando il tuo numero dopo il decimale (0.xxx) è breve. Quindi tutto ciò che devi fare è moltiplicare quel numero per il numero dopo la divisione.
Ex: 32 % 12 = 8
Lo fai. 32/12=2.666666667
Poi butti 2
via e ti concentri su 0.666666667
0.666666667*12=8
<- Questa è la tua risposta.
(di nuovo, facile solo quando il numero dopo il decimale è breve)
Diciamo che hai 17 mod 6.
il totale di 6 ti farà avvicinare di più a 17, sarà 12 perché se vai oltre 12 avrai 18 che è più della domanda di 17 mod 6. Prenderai quindi 12 e meno da 17 che ti darà la tua risposta, in questo caso 5.
17 mod 6 = 5
La divisione del modulo è piuttosto semplice. Utilizza il resto invece del quoziente.
1.0833... <-- Quotient
__
12|13
12
1 <-- Remainder
1.00 <-- Remainder can be used to find decimal values
.96
.040
.036
.0040 <-- remainder of 4 starts repeating here, so the quotient is 1.083333...
13/12 = 1R1, ergo 13% 12 = 1.
Aiuta a pensare al modulo come a un "ciclo".
In altre parole, per l'espressione n % 12
, il risultato sarà sempre <12.
Ciò significa che la sequenza per il set 0..100
per n % 12
è:
{0,1,2,3,4,5,6,7,8,9,10,11,0,1,2,3,4,5,6,7,8,9,10,11,0,[...],4}
In quella luce, il modulo, così come i suoi usi, diventa molto più chiaro.
L'unica cosa importante da capire è che il modulo (indicato qui da% come in C) è definito attraverso la divisione euclidea .
Per due (d, q)
numeri interi è sempre vero quanto segue :
d = ( d / q ) * q + ( d % q )
Come puoi vedere il valore di d%q
dipende dal valore di d/q
. Generalmente per interi positivi d/q
viene troncato verso zero , ad esempio 5/2 dà 2, quindi:
5 = (5/2)*2 + (5%2) => 5 = 2*2 + (5%2) => 5%2 = 1
Tuttavia per interi negativi la situazione è meno chiara e dipende dalla lingua e / o dallo standard. Ad esempio -5/2 può restituire -2 (troncato verso zero come prima) ma può anche restituire -3 (con un'altra lingua).
Nel primo caso:
-5 = (-5/2)*2 + (-5%2) => -5 = -2*2 + (-5%2) => -5%2 = -1
ma nella seconda:
-5 = (-5/2)*2 + (-5%2) => -5 = -3*2 + (-5%2) => -5%2 = +1
Come detto prima, ricorda solo l' invariante , che è la divisione euclidea .
Maggiori dettagli:
27% 16 = 11
Puoi interpretarlo in questo modo:
16 va 1 volta su 27 prima di passarlo.
16 * 2 = 32.
Quindi si potrebbe dire che 16 va una volta su 27 con un resto di 11.
Infatti,
16 + 11 = 27
Un altro esempio:
20% 3 = 2
Ebbene 3 va 6 volte su 20 prima di passarlo.
3 * 6 = 18
Per sommare a 20 abbiamo bisogno di 2, quindi il resto dell'espressione del modulo è 2.
È semplice, l'operatore Modulo (%) restituisce il resto dopo la divisione di numeri interi. Facciamo l'esempio della tua domanda. Quanto 27% 16 = 11? Quando dividi semplicemente 27 per 16, ovvero (27/16), ottieni il resto come 11, ed è per questo che la tua risposta è 11.
Scrivi una tabella che inizia con 0.
{0,1,2,3,4}
Continua la tabella in righe.
{0,1,2,3,4}
{5,6,7,8,9}
{10,11,12,13,14}
Tutto nella colonna uno è un multiplo di 5. Tutto nella colonna 2 è un multiplo di 5 con 1 come resto. Ora la parte astratta: puoi scrivere quella (1) come 1/5 o come espansione decimale. L'operatore modulo restituisce solo la colonna, o in un altro modo di pensare, restituisce il resto sulla divisione lunga. Stai trattando in modulo (5). Modulo diverso, tabella diversa. Pensa a una tabella hash.
Quando dividiamo due numeri interi avremo un'equazione simile alla seguente:
A / B = Q resto R
A è il dividendo; B è il divisore; Q è il quoziente e R è il resto
A volte, siamo interessati solo a ciò che è il resto quando dividiamo A per B. Per questi casi esiste un operatore chiamato operatore modulo (abbreviato come mod).
Esempi
16/5= 3 Remainder 1 i.e 16 Mod 5 is 1.
0/5= 0 Remainder 0 i.e 0 Mod 5 is 0.
-14/5= 3 Remainder 1 i.e. -14 Mod 5 is 1.
Vedere l' articolo della Khan Academy per ulteriori informazioni.
In informatica, la tabella hash utilizza l'operatore Mod per memorizzare l'elemento in cui A saranno i valori dopo l'hashing, B sarà la dimensione della tabella e R è il numero di slot o la chiave in cui l'elemento è inserito.
Vedere Come funziona una tabella hash per ulteriori informazioni
Questo è stato l'approccio migliore per me per comprendere l'operatore modulo. Ti spiegherò solo attraverso esempi.
16 % 3
Quando dividi questi due numeri, il risultato è il resto. Questo è il modo in cui lo faccio.
16 % 3 = 3 + 3 = 6; 6 + 3 = 9; 9 + 3 = 12; 12 + 3 = 15
Quindi ciò che resta a 16 è 1
16 % 3 = 1
Ecco un altro esempio: 16 % 7 = 7 + 7 = 14
cosa resta a 16? È2
16 % 7 = 2
Un altro: 24 % 6 = 6 + 6 = 12; 12 + 6 = 18; 18 + 6 = 24
. Quindi il resto è zero,24 % 6 = 0