Ho bisogno di manipolare direttamente la bitmask di un float.Per cui sapendo che i float in genere hanno 32 bit (mi interessano quelli a singola precisione), sto provando ad ottenere e a cambiare il valore di un float bit per bit.
Però mi sono accorto che deferenziando il puntatore la modifica non ha effetto.
Ecco un esempio di cosa faccio:
Sorprendentemente mi stampa 0.Invece dovrebbe stampare il valore che ha un float a singola precisione che ha il terzo bit della mentissa meno significativo a 1 (va vicino a zero).codice:float value=0.0; uint32_t* ptr; ptr=(uint32_t*)&value; *ptr=4; printf("%f",value);
Ho pensato che il problema era un arrotondamento, ma non funziona neanche con valori più grandi.