找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2393|回復(fù): 0
收起左側(cè)

小數(shù)翻轉(zhuǎn)

[復(fù)制鏈接]
ID:26188 發(fā)表于 2015-2-18 01:17 | 顯示全部樓層 |閱讀模式
void test()
{
    unsigned long i;
    lp=&fa;
    zf=*lp&0x80000000;                   //取數(shù)符號(hào)
    pianyi=((*lp&0x7F800000)>>23)-0x7f;  //取二進(jìn)制偏移量
    pyzf=pianyi&0x80;                    //指數(shù)偏移方向,1向小數(shù)偏,0向整數(shù)偏
    xiaoshu=(*lp&0x7FFFFF)|0x800000;     //取數(shù)部分
    if(pianyi>23)
    {//純整數(shù)計(jì)算
        zhengshu=xiaoshu;                //全部做整數(shù)處理
        xiaoshu=0;                       //小數(shù)為0
    }
    else if(pianyi<-1)
    {//純小數(shù)計(jì)算
        zhengshu=0;                      //全部做小數(shù)處理,整數(shù)為0
    }
    else
    {//復(fù)合計(jì)算
        temp2=23-pianyi;                 //計(jì)算整數(shù)個(gè)數(shù)
        zhengshu=xiaoshu>>temp2;         //取整數(shù)
        temp2= pianyi+1;                 //計(jì)算小數(shù)個(gè)數(shù)
        xiaoshu&=(0xFFFFFF>>temp2);      //取小數(shù)
    }
    //小數(shù)翻轉(zhuǎn)
    i=0x800000>>temp2;                   //定位取數(shù)數(shù)i的位置
    temp3=xiaoshufanzhuan;               //載入小數(shù)轉(zhuǎn)整數(shù)的位權(quán)
    temp1=0;                             //清空容器,準(zhǔn)備累加
    while(i)
    {//如果取數(shù)數(shù)i沒(méi)有到最低位
        if(xiaoshu&i) temp1+=temp3;      //如果取數(shù)數(shù)i取出位為1,當(dāng)前位開(kāi)始取位權(quán)累加
        temp3>>=1;                       //位權(quán)數(shù)整除2
        i>>=1;                           //取數(shù)數(shù)i整除2,向低位移動(dòng),直到移出數(shù)據(jù)
    }
    xiaoshu=temp1;                       //累加結(jié)構(gòu)給小數(shù)容器



if(zf)
{
            ftoas[0]=0x2d;
}
else
{
            ftoas[0]=0x2b;
}
}


回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表