Исправление i-rinat, 30.05.16 21:00 (текущая версия) :
Для целочисленных подходит. Но для double, скорее всего, нет.
Upd. И ещё UB будет, если в знаковый бит залезть.
Исходная версия i-rinat, 30.05.16 20:57: