82
Description of the EInt formats
Section 10-6
Programming example:
typedef struct
{
int m:11; // mantissa, -1024..1023
int e: 4; // exponent -8..7
unsigned int f: 1; // format, 1->special emoint format
} eint16;
//---------------------------------------------------------------------------
unsigned short int float_to_eint16(float value)
{
eint16 etmp;
int dec=0;
while (floor(value) != value && dec<16)
{
dec++; value*=10;
}
if (value>=0 && value<=32767 && dec==0)
*(short int *)&etmp=(short int)value;
else if (value>=-1000 && value<0 && dec==0)
{
etmp.e=0;
etmp.f=1;
etmp.m=(short int)value;
}
else
{
etmp.m=0;
etmp.f=1;
etmp.e=-dec;
if (value>=0)
etmp.m=1; // Set sign
else
etmp.m=-1; // Set sign
value=fabs(value);
while (value>1000)
{
etmp.e++; // increase exponent
value=value/10;
}
value+=0.5; // round
etmp.m=etmp.m*value; // make signed
}
R
return (*(unsigned short int *)&etmp);
}
//---------------------------------------------------------------------------
float eint16_to_float(unsigned short int value)
{
float f;
eint16 evalue;
evalue=*(eint16 *)&value;
if (evalue.f)
{
if (evalue.e>=0)
f=(int)evalue.m*pow10(evalue.e);
else
f=(int)evalue.m/pow10(abs(evalue.e));
}
else
f=value;
return f;
}
//---------------------------------------------------------------------------
Содержание SX-F
Страница 2: ......
Страница 14: ...6 Table of contents...
Страница 20: ...12 Glossary Section 1 6...
Страница 32: ...24 Cabinet mounting Section 2 3...
Страница 58: ...50 Connecting options Section 5 6...
Страница 72: ...64 Load Monitor and Process Protection 400 Section 7 5...
Страница 74: ...66 EMC standards Section 8 1...
Страница 266: ...258 System Data 900 Section 11 9...
Страница 274: ...266 Maintenance Section 12 3...
Страница 284: ...276 Liquid cooling Section 13 12...