找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1989|回复: 0
打印 上一主题 下一主题
收起左侧

小数翻转

[复制链接]
跳转到指定楼层
楼主
ID:26188 发表于 2015-2-18 01:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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;
}
}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表