Rappresentazioni numeriche (informatica)

gatsu1
Ciaooo,

come faccio a convertire 0,2 (decimale) in floating point??

Grazie 1000

Risposte
Galois1985
gatsu... potresti usare i numeri p-adici...ovvero un insieme particolare chiamato Z(2)...ma non so suggerirti esattamente come convertirlo...

Rael1
dipende da quale formato vuoi usare, se ti riferisci al "float" dello standard IEEE 754
si usano i 32 bit nel seguente modo : bit[31] -> segno, bit[30-23] -> esponende in notazione a eccesso 127, bit[22-0] -> mantissa.

converti il numero in binario :
converti a parte la parte intera del numero in binario, poi anche quello che c'è dopo la virgola (considera che devi cercare di ottenere la parte decimale come una somma di potenze di 2 ).
una volta convertito il numero, per portarlo nello standard, metti a 1 , il bit di segno se il tuo numero è negativo, a 0 se è positivo.
poi devi normalizzare:
il tuo numero sarà una cosa del tipo 11011.00010101010000...., ora moltiplicalo per 2 alla 0, e regola l'esponente in modo tale che l'ultima cifra a sinistra della virgola sia 1 (uno spostamento a sinistra della virgola consiste in un incremento di 1 dell'esponente del 2) , normalizzato il numero, per ottenere ciò che devi scrivere nel campo esponente, aggiungi all'esponente del 2, 127, così otterrai un numero la cui rappr binaria è da riportare nel campo esponente, ora, riporta nella parte della mantissa tutto il tuo num, a parte l'uno a sinistra della virgola.
ed il gioco è fatto, hai ottenuto un float ... meglio un esempio :

0.75

1) 0.75 > 0 => bit[31] = 0
2) 0(base 10) = 0(base 2)
3) conversione parte decimale :
0.75*2 = 1.5 => bit[22] = 1
1.5 - 1 = 0.5
0.5 *2 = 1 => bit[21]=1
1 - 1 = 0 => termine algoritmo

=> 0.11 x 2^0 = 1.1 x 2^-1 => esponente = -1 + 127 = 126
il numero in floating point è :
[0][01111110][10000000000000000000000]

Nota :
l'algoritmo "moltiplica per 2 e riporta la cifra intera", potrebe non convergere, come nel tuo caso, quindi limitati a 23 bit per la mantissa.

Rael1
nel caso di 0.2
la rappr in floating point dello standard IEEE 754 è :
[0][01111100][10011001100110011001100]

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.