バイナリ/16進数フローティングポイントのプログラミング(相互回転類似)
変換プログラム:
適用:
メモリデータをコピーして異なるデータ型で説明するのが原理です.
// , float
inline float i2f(int i)
{
float f = 0;
assert(sizeof(int) == sizeof(float));
memcpy(&f, &i, 4);
return f;
}
inline double ll2d(long long ll)
{
double d = 0;
assert(sizeof(double) == sizeof(long long));
memcpy(&d, &ll, 8);
return d;
}
適用:
int i = -1052770304; // , float ,=-12.0
float f = i2f(i);
printf("f=%f
", f);
long long ll = 0x4004000000000000L; // 。 double 2.5
double d = ll2d(ll);
printf("d=%f
", d);
メモリデータをコピーして異なるデータ型で説明するのが原理です.