69,371
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
typedef unsigned long u32;
typedef struct x_double_type_t x_double_type;
struct x_double_type_t
{
u32 low_32;
u32 hi_32 ;
};
#define double x_double_type
void f2d( float f , double *x )
{
u32 a , b;
u32 uf = *(u32*)&f;
u32*ux = (u32*)x;
ux[0] = ux[1] = 0;
ux[1] |= uf&0x80000000;
a = (uf&0x7f800000)>>23;
b = uf&0x7fffff;
a += 1024 - 128;
ux[1] |= a<<20;
ux[1] |= b>>3 ;
ux[0] |= b<<29;
}
int main()
{
float f = 3.14159265f;
double x;
f2d( f , &x );
printf( "%lf\n" , x );
while( 1 == scanf( "%f" , &f ) )
{
f2d( f , &x );
printf( "%lg\n" , x );
}
return 0;
}
#include <stdio.h>
void f2d( float f , double *x )
{
unsigned long a , b;
unsigned long uf = *(unsigned long*)&f;
unsigned long*ux = (unsigned long*)x;
ux[0] = ux[1] = 0;
ux[1] |= uf&0x80000000;
a = (uf&0x7f800000)>>23;
b = uf&0x7fffff;
a += 1024 - 128;
ux[1] |= a<<20;
ux[1] |= b>>3 ;
ux[0] |= b<<29;
}
int main()
{
float f = 3.14159265f;
double x;
f2d( f , &x );
printf( "%lf\n" , x );
while( 1 == scanf( "%f" , &f ) )
{
f2d( f , &x );
printf( "%lg\n" , x );
}
return 0;
}