Before you could use any simple shift or bit fiddling mechanism you'd have to know that the values you are operating on fall within a certain range. If the value is outside this range you'll get "weird" results.
That said, I use a hack (below) for a lot of systems. I doubt it will be faster than simply multiplying for any desktop chip.
typedef unsigned long long uint64_t;
static const uint64_t IEEELFMUL1024(0xA0000000000000LLU);
, char ** argv
if(2 == argc)
sin >> value;
std::cin >> value;
qword += IEEELFMUL1024;
std::cout << value << '\n';