#include #include #define spexpmask 0x7F800000 #define spframask 0x007FFFFF main(){ float s; unsigned int *p; p = (unsigned int *) &s; printf("enter the floating point number:"); fflush(stdin); scanf("%f", &s); printf("The number in ieee fp single precision is %08x\n", *p); printf("The exponent part is %02x=%d(base 10)\n\texp=unbias exponent(exponent part - 127)=%d\n", (*p & spexpmask) >> 23, (*p & spexpmask) >> 23, ((*p & spexpmask) >> 23) - 127 ); printf("The fraction part is %06x=%d(base 10)\n", *p & spframask, *p & spframask); printf("The significant is 1.f=1.%06x=%f(base 10)\n", (*p & spframask) << 1, ((*p & spframask) + pow(2.0,23.0)) / pow(2.0,23.0) ); if (*p >> 31) { printf("sign*1.f*2**exp=-%f*2**%d=%f\n", ((*p & spframask) + pow(2.0,23.0)) / pow(2.0,23.0), ((*p & spexpmask) >> 23) - 127, s); } else { printf("sign*1.f*2**exp=%f*2**%d=%f\n", ((*p & spframask) + pow(2.0,23.0)) / pow(2.0,23.0), ((*p & spexpmask) >> 23) - 127, s); } }