PDA

Visualizza la versione completa : [C] Conversione da intero a floating point


aletrc
29-09-2011, 10:10
Salve a tutti,
volevo chiedere se esiste in c una funzione per convertite un intero a 27bit ( 26 + 1 di segno) in un floating point a 32 bit.
eventualmente sapete dove posso trovare del materiale per documentarmi sull'argomento?
grazie a tutti.

MItaly
29-09-2011, 10:24
Secondo me la cosa più semplice è convertire questo fantomatico intero a 27 bit ( ma dove l'hai pescato? :confused: ) in un normale int (te la dovresti cavare con qualche operazione bitwise), e quindi convertire quest'ultimo in un float con un cast.

Raam General
02-10-2011, 19:58
Non so se funziona, ma c'è il costrutto cast che dovrebbe servire a questo:

float n;
n = (float) nome_variabile_27_bit;

oregon
02-10-2011, 20:06
Non può funzionare perché non esiste una variabile a 27 bit.

Quindi ne usi una a 32 e i bit in più, se non sono impostati correttamente (per i valori negativi) potrebbero dare problemi.

XAlbeX
02-10-2011, 23:40
A me viene in mente un codice del genere..
In teoria il compilatore dovrebbe aggiustare i bit per i numeri negativi, ma non te lo assicuro.


struct foo
{
signed int x:27;
signed int y:5;
} s;

s = *(foo *)&nome_variabile_27_bit;

float f = (float)(int) s.x;

:ciauz:

oregon
03-10-2011, 01:23
Originariamente inviato da XAlbeX ...

Sì ma a questo punto conviene scrivere



struct foo
{
signed int x:27;
};


e quindi, ad esempio



int main()
{
struct foo v;
v.x = 0x07FFFFFF;

double f = (double)v.x;
printf("%f\n", f);

return 0;
}


Quello che raccomando vivamente è di utilizzare i double e non i float ...

Loading