NaN

Da Wikipedia, l'enciclopedia libera.

In informatica, NaN è un simbolo per indicare il risultato di un'operazione eseguita su operandi non validi, specialmente in calcoli in virgola mobile. Il suo nome è un acronimo di Not a Number. Esempi sono la divisione per zero o la radice quadrata di un numero negativo, cui le FPU assegnano come risultato "NaN".

NaN e virgola mobile[modifica | modifica sorgente]

Nel calcolo in virgola mobile "NaN" e "infinito" non sono la stessa cosa, anche se in questo contesto vengono gestiti entrambi come casi particolari nella rappresentazione dei numeri reali e nelle operazioni. Un'operazione non valida si differenzia inoltre sia dall'overflow che dall'underflow aritmetico (i quali danno come risultato rispettivamente un infinito e un numero denormalizzato o uno zero).

Nello standard per il calcolo in virgola mobile IEEE 754 i NaN sono rappresentati con il campo dell'esponenziale riempito di "1" e un numero diverso da zero nel campo della mantissa. Questo è un esempio:

x11111111axxxxxxxxxxxxxxxxxxxxxx

Per il primo bit (che rappresenta il segno) non è previsto il valore. Se a=1 il numero è un quiet NaN ("NaN silenzioso"), mentre se a=0 si ha un signalling NaN ("NaN segnalatore").

Ogni NaN ha un valore diverso da qualunque altro numero, anche da un NaN la cui rappresentazione è identica. Al punto che si può verificare se il contenuto di una variabile è un NaN confrontandola con se stessa (x != x => x è un NaN).

Nello standard corrente, ogni operazione eseguita su un NaN dà come risultato un altro NaN, inficiando tutta una serie di calcoli in caso di un errore a monte che dia questo risultato. Nella revisione (attualmente proposta) IEEE 754r, ci sono due eccezioni: le funzioni maxnum e minimum (che restituiscono il numero rispettivamente più grande e più piccolo tra due operandi) danno preferenza ai numeri sugli NaN (questo è utile nel caso di calcoli statistici su dati sparsi).

Voci correlate[modifica | modifica sorgente]

Collegamenti esterni[modifica | modifica sorgente]

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