Floating point
Ciao a tutti.
Non riesco a capire il metodo per calcolare da distanza tra 2 numeri in floating point nel formato IEEE P754 cioè quello con 23 bit di mantissa 8 per l'esponente e 1 per il segno.
Esempio:
Nel formato IEEE P754 quanti numeri sono rappresentati tra 8 e 16.75 compresi?
Soluzione:
La rappresentazione di 8 in f.p. è: 1000 = 1.0000… ∙ 23
La rappresentazione di 16.75 è: 10000.11 = 1.000011… ∙ 24
Si parte dalla rappresentazione del numero minore e si conteggiano le rappresentazioni fino ad arrivare al numero maggiore.
Da $ 1.00000000000000000000000 * 2^3 $ a $ 1.00000000000000000000000*2^4$ ci sono $ 2^23 $ rappresentazioni;
Da $1.00000000000000000000000 * 2^4$ a $1.00001100000000000000000 * 2^4$ ci sono $3*2^17$ rappresentazioni (+1 per tener conto dell’estremo).
In totale i numeri rappresentabili sono: $ 2^23 +3∙ 2^17 = (2^6+3)∙2^17 = 67∙2^17 = 67∙2^20∙2^-3 = 8.375∙10^6 $ CIRCA
Non riesco a capire come ha fatto!!!
AIUTO!!!
Non riesco a capire il metodo per calcolare da distanza tra 2 numeri in floating point nel formato IEEE P754 cioè quello con 23 bit di mantissa 8 per l'esponente e 1 per il segno.
Esempio:
Nel formato IEEE P754 quanti numeri sono rappresentati tra 8 e 16.75 compresi?
Soluzione:
La rappresentazione di 8 in f.p. è: 1000 = 1.0000… ∙ 23
La rappresentazione di 16.75 è: 10000.11 = 1.000011… ∙ 24
Si parte dalla rappresentazione del numero minore e si conteggiano le rappresentazioni fino ad arrivare al numero maggiore.
Da $ 1.00000000000000000000000 * 2^3 $ a $ 1.00000000000000000000000*2^4$ ci sono $ 2^23 $ rappresentazioni;
Da $1.00000000000000000000000 * 2^4$ a $1.00001100000000000000000 * 2^4$ ci sono $3*2^17$ rappresentazioni (+1 per tener conto dell’estremo).
In totale i numeri rappresentabili sono: $ 2^23 +3∙ 2^17 = (2^6+3)∙2^17 = 67∙2^17 = 67∙2^20∙2^-3 = 8.375∙10^6 $ CIRCA
Non riesco a capire come ha fatto!!!
AIUTO!!!
Risposte
Io invece non riesco a capire cosa non hai capito:
1) Quando trasforma i numeri decimali in formato binario single-precision;
2) Quando conta i numeri così rappresentati, in base due.
3) Quando converte il totale da binario a decimale.
Cosa non ti è chiaro?
1) Quando trasforma i numeri decimali in formato binario single-precision;
2) Quando conta i numeri così rappresentati, in base due.
3) Quando converte il totale da binario a decimale.
Cosa non ti è chiaro?
1) Quando trasforma i numeri decimali in formato binario single-precision; CAPITO
2) Quando conta i numeri così rappresentati, in base due. CAPITO
3) Quando converte il totale da binario a decimale. CAPITO
Io non riuscirei ad applicare questo metodo perchè non lo capisco.
Non mi è chiaro perchè Da $1.00000000000000000000000⋅2^3 $ a $ 1.00000000000000000000000⋅2^4$ ci sono$ 2^23$ rappresentazioni!!!
questo invece l'ho capito: Da $ 1.00000000000000000000000⋅2^4$ a $1.00001100000000000000000⋅2^4 $ ci sono $3⋅2^17$ rappresentazioni (+1 per tener conto dell’estremo). Perchè $2^23 : 16 = x : 0.75$ $ 0.75= 3/4$ e funziona!!
Il problema e che con il primo caso non funziona!
2) Quando conta i numeri così rappresentati, in base due. CAPITO
3) Quando converte il totale da binario a decimale. CAPITO
Io non riuscirei ad applicare questo metodo perchè non lo capisco.
Non mi è chiaro perchè Da $1.00000000000000000000000⋅2^3 $ a $ 1.00000000000000000000000⋅2^4$ ci sono$ 2^23$ rappresentazioni!!!
questo invece l'ho capito: Da $ 1.00000000000000000000000⋅2^4$ a $1.00001100000000000000000⋅2^4 $ ci sono $3⋅2^17$ rappresentazioni (+1 per tener conto dell’estremo). Perchè $2^23 : 16 = x : 0.75$ $ 0.75= 3/4$ e funziona!!
Il problema e che con il primo caso non funziona!
Fra due numeri che hanno uguale mantissa e differenza 1 sull'esponente ci sono tante rappresentazioni quanti sono i differenti numeri che la mantissa può generare. Visto che il numero è in binario e la mantissa è 23 bit, il numero di rappresentazioni è dato da $2^23$
Quindi questo vale anche per il "numero dei diversi numeri" che ci sono fra $1.0*2^3$ e $1.0*2^4$(*)
Il secondo tuo calcolo non l'ho proprio capito
Cosa sarebbe, una proporzione?
(*) Proviamo a contare:
$(1.)00000000000000000000000_2 * 2^3
$(1.)00000000000000000000001_2 * 2^3
$(1.)00000000000000000000010_2 * 2^3
$(1.)00000000000000000000011_2 * 2^3
...
$(1.)111111111111111111111111110_2 * 2^3
$(1.)111111111111111111111111111_2 * 2^3
quanti sono? Ovviamente quanti ne può rappresentare il numero di cifre binarie (bit) disponibili, ovvero $2^23$
Quindi questo vale anche per il "numero dei diversi numeri" che ci sono fra $1.0*2^3$ e $1.0*2^4$(*)
Il secondo tuo calcolo non l'ho proprio capito

(*) Proviamo a contare:
$(1.)00000000000000000000000_2 * 2^3
$(1.)00000000000000000000001_2 * 2^3
$(1.)00000000000000000000010_2 * 2^3
$(1.)00000000000000000000011_2 * 2^3
...
$(1.)111111111111111111111111110_2 * 2^3
$(1.)111111111111111111111111111_2 * 2^3
quanti sono? Ovviamente quanti ne può rappresentare il numero di cifre binarie (bit) disponibili, ovvero $2^23$
Hai pienamente ragione. Infatti fissato un esponente ci sono $ 2^23 $ numeri rappresentabili tra il minimo e il massimo. (questo ieri lo ignoravo)
Ho capito anche la seconda parte: basta fare una banale sottrazione tra 16.75 e 16 (rappresentati con mantissa ed esponente) ed il risultato è proprio $ 3*2^17$
Meglio lasciar perdere la proporzione
Ho capito anche la seconda parte: basta fare una banale sottrazione tra 16.75 e 16 (rappresentati con mantissa ed esponente) ed il risultato è proprio $ 3*2^17$
Meglio lasciar perdere la proporzione