Aiuto conversione Floating point Clicca QUI per vedere il messaggio nel forum |
Sylar |
Ciao a tutti, esercitandomi a fare qualche floating point qualcosa non mi quadra:
Trasfomare 25 da decimale a floating point
25 = 11001
Esponente 2^4 83
Mantissa 1001
e fin qui tutto ok.
Ma ora in che modo riesco a scrivere il floating point? Un bit è del segno, 8 dell'esponente ed il resto della mantissa (23), per cui
0 1000 0011 1001 000... Provando a scrivero in "esadecimale" viene fuori 41C80000.
Provando a trasformare questo float per verficare se tutto è corretto facciamo:
41*2 +1 (dato che c'è C) = 83
83-7F=4 l'esponente è 4.
Scriviamo la mantissa C8
1100 1000
dato che l'esponente è 4 dobbiamo mettere la virgola dopo la 5° cifra a partire da sinistra, per cui 11001,000 che equivale a 25,00
RIPORTA!
Ora se provo a far la stessa cosa con -15 non mi riporta! :(
15 = 1111
E = 2^3 82
Mantissa 111
1 1000 0010 111 il che equivale a C1700000
Ora se provo a convertire di nuovo il floatinf in decimale ho:
C1*2 = 82 2^3
Scrivo la mantissa 70
0111 0000
dato che l'esponente è 3 viene fuori 111,0000 cioè 7,000 che in teoria è -7,00 dato che il bit del segno è 1.
Dov'è che sbaglio? |
|
|
|