union double_bitfld_t {
double dbl;
struct {
unsigned int mnt : 52;
unsigned int exp : 11;
unsigned int sgn : 1;
} bits;
};
double_bitfld_t x;
cin >> x.dbl;
cout << (x.bits.sgn ? '+' : '-') << (1+x.bits.mnt/double(1<<52)) << "*2^" << (x.bits.exp-1023) << endl;