Di nuovo salve a tutti.

La domanda che vorrei porvi è abbastanza tecnica, ma forse qualcuno può aiutarmi: ho creato un programmino che permette l'estrazione dei bit di una variabile float per poi stamparli a video. Non posto il listato perchè il problema non è il programma, che funziona a dovere, ma il fatto che io non riesco a trovarmi con i calcoli.

Allora: se io inserisco il float 1.25 nel programma, questo mi restituisce la stringa di bit "0 01111111 01000000000000000000000", che corrisponde alla rappresentazione dei floating point secondo il Sistema Aritmetico Standard IEEE 754, cioè tramite l'utilizzo di un bit per il segno, 8 per l'esponente e 23 per la mantissa (i bit sono scritti del + significativo al - significativo, tranne per la mantissa che l'ho stampata al contrario). La formula per il calcolo del valore di un numero normalizzato è la seguente: (-1)^s [l.m] 2^(e-bias) , dove s è il bit del segno, l è il bit implicito dei numeri normalizzati,m è la mantissa,e è l'esponente e il bias è 127 in questo caso.

Quindi per ricalcolarmi il valore del float che ho inserito inizialmente, partendo da quella stringa di bit, dovrei fare: (-1)^0 [1.2] 2^(127-127) = 1 * 1.2 * 1 = 1.2.

Dov'è che sbaglio? So che la domanda è un pò tecnica, ma confido nella vostra conoscenza.