ldexp関数は、指定された仮数部(小数成分)と指数部(整数成分)から浮動小数点実数を求めます。この関数は、frexp関数の逆関数です。

#include <math.h>
double ldexp(double x, int exp);

xは仮数部の値を指定します。
expは指数部の値を指定します。

戻り値として、浮動小数点実数の値を返します。

ldexp関数は、浮動小数点実数xと2のexp乗との積の結果を返します。

プログラム 例

#include <stdio.h>
#include <math.h>

int main(void)
{
  int    loop_cnt;
  int    exp;
  double x;

  for (loop_cnt = 1; loop_cnt <= 5; ++loop_cnt) {
    printf('仮数部と指数部を入力してください ==> ');
    scanf('%lf%d', &x, &exp);

    printf('%f × 2^%d = %f\n', x, exp, ldexp(x, exp));
  }

  return 0;
}

例の実行結果

$ ./ldexp.exe
仮数部と指数部を入力してください ==> 0.5 1
0.500000 × 2^1 = 1.000000
仮数部と指数部を入力してください ==> -0.5 1
-0.500000 × 2^1 = -1.000000
仮数部と指数部を入力してください ==> 0.5 9
0.500000 × 2^9 = 256.000000
仮数部と指数部を入力してください ==> 0.5 11
0.500000 × 2^11 = 1024.000000
仮数部と指数部を入力してください ==> 0.5 0
0.500000 × 2^0 = 0.500000
$