Overflow aritmetico
![](http://upload.wikimedia.org/wikipedia/commons/thumb/5/53/Odometer_rollover.jpg/220px-Odometer_rollover.jpg)
Un overflow aritmetico è un problema relativo alle operazioni eseguite sui numeri da un calcolatore ed è dovuto all'impossibilità di quest'ultimi di memorizzare numeri di dimensione arbitrariamente grande. Esso si verifica quando il risultato di un'operazione tra numeri eccede il valore massimo rappresentabile con bit fissati a disposizione in memoria.
Descrizione
[modifica | modifica wikitesto]Ogni bit, per definizione, può assumere in modo esclusivo i valori 1 e 0; con bit a disposizione, possiamo memorizzare un valore massimo pari a (esempio: per , il massimo valore rappresentabile è , ossia 15, la cui rappresentazione binaria è 1111
). Nell'esempio dato, si verificherebbe overflow se a tale numero (1111
) si sommasse 1. Il valore ottenuto diverrebbe 1 0000
(16, secondo il sistema decimale), impossibile da rappresentare su 4 bit. Siccome il numero di bit a disposizione è pre-impostato (nel nostro caso è 4, minore di 5), il bit più significativo andrebbe perso. Il valore memorizzato, pertanto, diverrebbe 0000
, il quale codifica per il valore 0 (dunque non 16).
L'overflow viene solitamente ottenuto mediante somme di due numeri positivi estremamente grandi, in seguito alle quali la macchina restituisce un risultato negativo (matematicamente assurdo). Ugualmente, in caso di somme tra due numeri negativi estremamente piccoli, ci si può aspettare come risultato un numero positivo (in questo caso si tratterebbe di underflow). Il bit in più che viene "buttato" dalla macchina spesso rappresenta il segno del numero (1 nel caso sia negativo) quindi nel trabocco il numero perde il segno diventando positivo quando magari ci si aspettava un negativo (o viceversa).
Complemento a due
[modifica | modifica wikitesto]Il complemento a due è un metodo informatico di rappresentazione numerica spesso utilizzato per facilitare operazioni di somma e differenza tra numeri relativi. Il numero di bit destinati alla rappresentazione è pre-impostato dal programmatore nella cosiddetta fase di dichiarazione delle variabili, nonché dal linguaggio di programmazione stesso e dalla macchina su cui il codice viene eseguito. Per somme algebriche di numeri binari rappresentati in complemento a due si verifica overflow quando:
- la somma tra due numeri entrambi positivi restituisce un numero negativo;
- la somma tra due numeri entrambi negativi restituisce un numero positivo;
Voci correlate
[modifica | modifica wikitesto]Collegamenti esterni
[modifica | modifica wikitesto]- Overflow, su Treccani.it – Enciclopedie on line, Istituto dell'Enciclopedia Italiana.
- Overflow, su Vocabolario Treccani, Istituto dell'Enciclopedia Italiana.
- overflow, su sapere.it, De Agostini.
- (EN) Denis Howe, overflow, in Free On-line Dictionary of Computing. Disponibile con licenza GFDL