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.
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.
Secondo me la cosa più semplice è convertire questo fantomatico intero a 27 bit ( ma dove l'hai pescato?) in un normale int (te la dovresti cavare con qualche operazione bitwise), e quindi convertire quest'ultimo in un float con un cast.
Amaro C++, il gusto pieno dell'undefined behavior.
Non so se funziona, ma c'è il costrutto cast che dovrebbe servire a questo:
float n;
n = (float) nome_variabile_27_bit;
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.
No MP tecnici (non rispondo nemmeno!), usa il forum.
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.
codice:struct foo { signed int x:27; signed int y:5; } s; s = *(foo *)&nome_variabile_27_bit; float f = (float)(int) s.x;![]()
Sì ma a questo punto conviene scrivereOriginariamente inviato da XAlbeX ...
e quindi, ad esempiocodice:struct foo { signed int x:27; };
Quello che raccomando vivamente è di utilizzare i double e non i float ...codice:int main() { struct foo v; v.x = 0x07FFFFFF; double f = (double)v.x; printf("%f\n", f); return 0; }
No MP tecnici (non rispondo nemmeno!), usa il forum.