Un altro modo per utilizzare i bitwise su variabili float o double consiste nel ricorrere alle union. Con qualcosa del genere:

codice:
union float_int {
   float x;
   int y;
};

   ...

   union float_int my_union;

   ...

   scanf("%f", & my_union.x)

   ...

   mask = 0x7f800000;
   xesp = my_union.y & mask;
   xesp >>= 23;
   xesp = xesp - bias;
   
   ...
utilizziamo i bitwise su un valore intero (my_union.y) che però ha la stessa rappresentazione binaria del valore float my_union.x...

Non avevo mai pensato alla soluzione con l'indirizzo... mi sembra abbastanza intelligente (ovviamente con la correzione di MItaly).