#include int main(int argc, char **argv) { // long long values[5]={0x84,0x80,0,0,0}; // 8 // long long values[5]={0x80,0xcc,0xcc,0xcc,0xcc}; // .8 long long values[5]={0x7c,0xf7,0x95,0x54,0xfa}; // .8 long long exponent,mantissa,sign; long long integer; double fp=0; exponent=values[0]-0x80; sign=1; // below only true if packed */ // sign=(values[1]&0x80)?-1:1; mantissa=((values[1]|0x80)<<24)| (values[2]<<16)| (values[3]<<8)| (values[4]); integer=mantissa>>(32-exponent); if (mantissa==0) { printf("DIV BY ZERO\n"); return 0; } fp=(double)mantissa/(double)(1ULL<<32); printf("Sign=%lld Mantissa=%llx Exponent=%llx\n",sign,mantissa,exponent); printf("Integer=%lld fp=%lf\n",integer,fp); return 0; }