В <math.h>
double frexp (double value, int *exp)
разложить VALUE по экспоненте и мантиссе.
double ldexp (double value, int exp)
делает наоборот.
Чтобы получить целочисленное значение, у вас естьумножить результат frexp на показатель FLT_RADIX DBL_MANT_DIG (они доступны в <float.h>
. Чтобы сохранить это в целочисленной переменной, вам также нужно найти подходящий тип (часто 64-битный тип)
Если выЕсли вы хотите обрабатывать 128-битный код удвоения в некоторых реализациях, вам потребуется C99 frexpl, чтобы выполнить разбиение, и тогда у вас, вероятно, нет подходящего целочисленного типа для хранения полного результата.