void test()
{
unsigned long i;
lp=&fa;
zf=*lp&0x80000000; //取数符号
pianyi=((*lp&0x7F800000)>>23)-0x7f; //取二进制偏移量
pyzf=pianyi&0x80; //指数偏移方向,1向小数偏,0向整数偏
xiaoshu=(*lp&0x7FFFFF)|0x800000; //取数部分
if(pianyi>23)
{//纯整数计算
zhengshu=xiaoshu; //全部做整数处理
xiaoshu=0; //小数为0
}
else if(pianyi<-1)
{//纯小数计算
zhengshu=0; //全部做小数处理,整数为0
}
else
{//复合计算
temp2=23-pianyi; //计算整数个数
zhengshu=xiaoshu>>temp2; //取整数
temp2= pianyi+1; //计算小数个数
xiaoshu&=(0xFFFFFF>>temp2); //取小数
}
//小数翻转
i=0x800000>>temp2; //定位取数数i的位置
temp3=xiaoshufanzhuan; //载入小数转整数的位权
temp1=0; //清空容器,准备累加
while(i)
{//如果取数数i没有到最低位
if(xiaoshu&i) temp1+=temp3; //如果取数数i取出位为1,当前位开始取位权累加
temp3>>=1; //位权数整除2
i>>=1; //取数数i整除2,向低位移动,直到移出数据
}
xiaoshu=temp1; //累加结构给小数容器
if(zf)
{
ftoas[0]=0x2d;
}
else
{
ftoas[0]=0x2b;
}
}
|