Why use a pointer? The general rule for working with bits is that unsigned types are the best to use even though it really doesn't matter, it is much better when viewed hexadecimally.
Code:
float number = 56.73f;
unsigned int sign_mask = 0x80000000; /* Bit 31 */
/* Alternative option */
unsigned int sign_mask = (1U << 31); /* The same as above */
unsigned int sign_bit;
sign_bit = number & sign_mask;
/* sign_mask is : 1000 0000 0000 0000 0000 0000 0000 0000
in binary therefore, sign_bit is either all zeros or like sign mask in binary,
which is a large number of course. */
printf("%#08x\n", sign_mask);
printf("%#08x\n", sign_bit);
Try this see what it outputs. Binary and hexademical arithmetic are not taught in school usually but they are not that tough to understand... Numbers are absolute quantities that can be represented in various ways.