Linguaggio C e Tipi Reali
Ho un dubbio sulla rappresentazione dei numeri reali nel linguaggio C: il tipo float è rappresentato in floating point a precisione singola 32 bit (4 byte), la singola precisione permette di rappresentare al più 8 cifre significative mentre per il tipo double al più 16 cifre significative.
Per quale motivo le cifre significative sono 8 per float e 16 per double?
Nel floating point a 32 bit 1 bit per il segno, 8 per esponente e 23 per la mantissa, da dove escono le 8 cifre significative?
grazie anticipato
Per quale motivo le cifre significative sono 8 per float e 16 per double?
Nel floating point a 32 bit 1 bit per il segno, 8 per esponente e 23 per la mantissa, da dove escono le 8 cifre significative?
grazie anticipato
Risposte
Ti invito a non dare troppo per scontato quei numeri. Sono valori comuni ma cambiando compilatore e/o sistema questi valori potrebbero cambiare.
In ogni caso le cifre significative non sono binarie, bensì decimali.
In ogni caso le cifre significative non sono binarie, bensì decimali.
Viene usata la distanza relativa tra due numeri consecutivi nella specifica rappresentazione. L'idea è che le prime \(n\) cifre decimali significative non variano quando un numero viene prima convertito nella rappresentazione floating point e poi riletto (a patto ovviamente che la conversione non converta il numero in subnormal o infiniti o altro).