バイナリ/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);

メモリデータをコピーして異なるデータ型で説明するのが原理です.