Riporto la formula da iutilizzarsi per l calcolo del valore REAL di un numero decimale.
Calcolo esponente
Occorre trovare l’esponente di 2 per cui dividendo il numero si ottiene un risultato maggiore di 1 e minore di 2.
Calcolo mantissa
Si divide il numero per 2 elevato all’esponente trovato e si sottrae dal risultato 1.
Si moltiplica il numero per 2 elevato alla 23.
Calcolo valore REAL
Si somma 127 al valore di esponente trovato.
Si moltiplica per 2 elevato alla 23 il risultato e si somma al valore della mantissa.
Esempi
Numero decimale 123.87, l’esponente è 6.
Mantissa (123.87/2^6)=1,93546875 sottraggo 1 diventa 0.93546875. (0.93546875*2^23) in hex 16#77BD71
Valore REAL ((127+6)*2^23) in hex 16#42800000, sommando la mantissa 16#42800000+16#77BD71=16#42F7BD71
Se il numero è negativo si somma 16#80000000
Attenzione! Su SlimLine i numeri sono rappresentati in Little-Endian quindi il valore REAL di 123.87 rappresentato come sequenza di bytes sarà 16#71, 16#BD, 16#F7, 16#42. Come si vede dallo screenshot eseguendo un programma che ha allocate allo stesso indirizzo dell’area DB100 tre diverse variabili una REAL, una DWORD ed un array di BYTES. Caricando il programma sullo SlimLine e definendo nella finestra di Watch diversi valori della variabile REAL si può vedere la rappresentazione del valore (Download programma).