Perché IEEE 754 Single Float ha 8 bit per esponente ma consente solo 38 valori base 10 Valore massimo

3

Perché lo standard IEEE 754 fornisce 8 bit per l'esponente, ma mette un raggio massimo di 38 sull'esponente accettabile più grande?

Sembra un po 'ridicolo avere l'archiviazione dei dati lì ma non permetterne l'effettiva utilizzazione.

Volevo mettere i dati in questo esponente per qualche codifica che sto facendo, ma non posso usare tutti i bit perché non posso impacchettare un esponente più grande di 38! Speravo di comprimere valori fino a 256 usando tutti i bit (2 ^ 8).

    
posta JamesHoux 24.12.2013 - 06:08
fonte

2 risposte

11

Il punto fluttuante memorizza l'esponente e la mantissa nella base due, non la base 10. Due alla 127ª potenza corrispondono all'incirca alla decima potenza, quindi questo è il numero decimale più grande che può essere memorizzato.

Vedi link

    
risposta data 24.12.2013 - 06:45
fonte
4

IEEE 754 float standard a precisione singola (ad esempio 32 bit) riservano 1 bit per il bit di segno, 8 per l'esponente e 23 per la mantissa. Non sono sicuro di dove stiate ottenendo il valore di 38 (base 10) come esponente "massimo". Si prega di chiarire nei commenti se sto interpretando in modo errato.

Poiché l'esponente è 8 bit, l'intervallo di valori esponenziali può essere compreso tra 00000000 e 11111111 (che sono riservati rispettivamente a 0 e all'infinito). Tuttavia, qualsiasi valore di esponente compreso tra 00000001 e 11111110 è valido. Quindi, tenendo conto di un bias di -127, puoi raggiungere un esponente di 127.

Quindi, assumendo una mantissa di tutti gli 1 (cioè un valore molto vicino a 2), puoi ottenere fino a 2 ^ 127 per la tua codifica.

Se tutto ciò di cui hai bisogno è 2 ^ 8 per la codifica, prendi in considerazione l'utilizzo di un numero inferiore di bit nel tuo numero in virgola mobile.

Leggi di più qui: link

    
risposta data 24.12.2013 - 06:22
fonte

Leggi altre domande sui tag