| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 775 人关注过本帖
标题:数制转换问题
只看楼主 加入收藏
蓝鲨
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2008-9-30
收藏
 问题点数:0 回复次数:5 
数制转换问题
怎么编程将八位十六进制数(也就是三十二位二进制数)转换成浮点数?
搜索更多相关主题的帖子: 数制 
2008-09-30 23:51
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
unsigned long h = 0x20000000;
double d = (double)h;
//----------------------------------------------------

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void)
{
    double d = 0.0;;
    char h[9];
    int i;


    scanf("%8s", h);

    for(i = 0; i < strlen(h); i++)
    {

        if(h[i] >= '0' && h[i] <= '9')
            d += h[i] - '0';
        else if(h[i] >= 'a' && h[i] <= 'f')
            d += h[i] - 'a' + 10;
        else if (h[i] >= 'A' && h[i] <= 'F')
            d += h[i] - 'A' + 10;
        else
            puts("Error!");
            
        if(h[i + 1])
            d *= 16;
    }

    printf("%lf\n", d);

    system("Pause");
    return 0;
}


//END

[[it] 本帖最后由 cosdos 于 2008-10-1 02:02 编辑 [/it]]

—>〉Sun〈<—
2008-10-01 00:27
蓝鲨
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2008-9-30
收藏
得分:0 
回复 2# cosdos 的帖子
COSDOS 兄:
你考虑问题简单了,因为浮点数用三十二位二进制表示时,由一位的符号位+八位的阶码+二十三位的尾数构成的。按照你的那种方法就只计算到了整数而没有考虑到小数;还有就是没有考虑每一位的权值问题。

[[it] 本帖最后由 蓝鲨 于 2008-10-1 08:54 编辑 [/it]]
2008-10-01 08:44
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
#include <stdio.h>

int main(void)
{

    unsigned long a = 0x3e6b851f;  // 0.23
    float f = *((float *)(&a));
   
    printf("%f", f);
   
    getchar();
    return 0;
}

—>〉Sun〈<—
2008-10-01 11:10
子洋虾米
Rank: 1
来 自:哈尔滨市第九中学
等 级:新手上路
帖 子:79
专家分:0
注 册:2008-9-15
收藏
得分:0 
浮点数...我恨你...
2008-10-02 11:40
smltq
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:566
专家分:400
注 册:2008-1-21
收藏
得分:0 
LS是马甲
2008-10-02 20:15
快速回复:数制转换问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013607 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved