www.pudn.com > Float.zip > Float.c


#include  
#include  
 
#define Uchar unsigned char 
#define Uint unsigned int 
 
Uchar x[4]; 
 
void FtoC(void); 
void CtoF(void); 
Uchar get_Ex(void); 
void get_int(Uchar Ex); 
void get_xiao(Uchar Ex); 
/*************************************************************/ 
void FtoC(void) 
{ 
   float a; 
   Uchar i,*px; 
   void *pf; 
 
   px = x;                            
   pf = &a;                            
   a = 34.526 * 9.1; 
   for(i=0; i<4; i++) 
    *(px + i) = *((char *)pf + i);  
} 
/****************************************************************/ 
void CtoF(void) 
{ 
   float a; 
   Uchar i,*px; 
   Uchar x[4] = {56,180,150,73}; 
   void *pf; 
 
   px = x; 
   pf = &a; 
   for(i=0; i<4; i++) 
    *((char *)pf + i) = *(px + i); 
} 
/*****************************************************************/ 
Uchar get_Ex(void) 
{ 
   Uint Ex; 
 
    Ex = (x[0] << 1) + (x[1] >> 7) - 127; 
	return(Ex); 
} 
/*****************************************************************/ 
void get_int(Uchar Ex) 
{ 
   Uint I; 
 
     if(Ex < 8) 
	   I = (x[1] | 0x80) >> (7 - Ex); 
	 else if((Ex > 7) && (Ex < 16)) 
	 { 
       I = x[1]; 
	   I = (I << 8) + x[2]; 
       I = (I | 0x8000) >> (15 - Ex); 
	 } 
} 
/******************************************************************/ 
void get_xiao(Uchar Ex) 
{ 
   long y[8] = {50000000L,25000000L,12500000L,6250000L,3125000L,1562500L,781250L,390625L}; 
   long  P; 
   Uchar Pf,Ps,Pt,n; 
 
     if(Ex < 8) 
       n = (x[1] << (Ex + 1)) + (x[2] >> (7 - Ex)); 
     else if(Ex > 7 && Ex < 16) 
	   n = (x[2] << (Ex - 7)) + (x[3] >> (15 - Ex)); 
     P = (n >> 7) * y[0] + ((n >> 6) & 0x01) * y[1] + ((n >> 5) & 0x01) * y[2] + ((n >> 4) & 0x01) * y[3] + ((n >> 3) & 0x01) * y[4] +((n >> 2) & 0x01) * y[5] +((n >> 1) & 0x01) * y[6] + ((n >> 0) & 0x01) * y[7]; 
	 Pf = P / 10000000L; 
	 Ps = (P % 10000000L) / 1000000L; 
	 Pt = ((P % 10000000L) % 1000000L) / 100000L; 
} 
/********************************************************************************************************************************************************************************************************************/