Test bits: float | ||||||||||||||
How would we test the bits of a float value? | ||||||||||||||
float f = 1024; | ||||||||||||||
int n; | ||||||||||||||
for (n = 0; n < 32; n++) | ||||||||||||||
if (f & (1 << n)) | ||||||||||||||
printf ("1"); | ||||||||||||||
else | ||||||||||||||
printf ("0"); | ||||||||||||||
Compile error! | ||||||||||||||
Need a way to look at f as if it were int: | ||||||||||||||
float f = 1024; | ||||||||||||||
int n, i; | ||||||||||||||
i = (int) f; | ||||||||||||||
for (n = 0; n < 32; n++) | ||||||||||||||
if (i & (1 << n)) | ||||||||||||||
printf ("1"); | ||||||||||||||
else | ||||||||||||||
printf ("0"); | ||||||||||||||
Can't use cast on f: value is converted to int. | ||||||||||||||
Cast a pointer: | ||||||||||||||
int * iptr = (int *)&f; | ||||||||||||||
i = *iptr; | ||||||||||||||