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;
}
}
|