Overflow aritmetico

problema relativo alle operazioni eseguite sui numeri da un calcolatore
(Reindirizzamento da Arithmetic overflow)

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.

L'overflow aritmetico di un intero funziona in maniera simile all'overflow del contachilometri: se tutte le cifre sono impostate sul 9 e si incrementa il numero di uno, si provoca una serie di addizioni di riporto a cascata. Tuttavia, poiché non è possibile rappresentare una cifra più alta di 999 999, il contatore si resetta a zero

Descrizione

modifica

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
  Lo stesso argomento in dettaglio: Complemento a due.

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

Collegamenti esterni

modifica
  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica