标题:float究竟怎样读取磁盘的二进制数据?
只看楼主
meijiangmian
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2008-2-6
 问题点数:0 回复次数:2 
float究竟怎样读取磁盘的二进制数据?
这时C源码:
#include <stdio.h>
int   main(void)
{
        float   a   =   3.4e-38/10;                 float   g=a*10e38;
        float   b   =   3.4e-38/100;               float   h=b*10e38;
        float   c   =   3.4e-38/1000;             float   i=c*10e38;
        float   d   =   3.4e-38/10000;           float   j=d*10e38;
        float   e   =   3.4e-38/100000;         float   k=e*10e38;
        float   f   =   3.4e-38/1000000;       float   l=f*10e38;
        printf("g=%f\n",   g);printf("a=%e\n",   a);
        printf("h=%f\n",   h);printf("b=%e\n",   b);
        printf("i=%f\n",   i);printf("c=%e\n",   c);
        printf("j=%f\n",   j);printf("d=%e\n",   d);
        printf("k=%f\n",   k);printf("e=%e\n",   e);
        printf("l=%f\n",   l);printf("f=%e\n",   f);
      
        getchar();
        return   0;
}
结果是
g=3.400000
a=3.400000e-039
h=0.340000
b=3.399998e-040
i=0.034000
c=3.399970e-041
j=0.003400
d=3.399550e-042
k=0.000341
e=3.405155e-043
l=0.000034
f=3.363116e-044
我真的很想明白a,b,c,d,e,f的那些值是如何出来的,明白点就是:a,b,c,d,e,f所代表的磁盘上相应的数据存储单位的状态。
还有就是产生a,b,c,d,e,f这些值时,系统会逐个降低它们的精度,那么系统具体是如何通过操作磁盘上相应的数据存储单位的状态来实现的。
上面的数据a,b,c,d,e,f显然不是我们“人脑”的四舍五入得出的,如果是人脑得出的,一定只有3,4,0这三个数字而已,不会有其它数字的。
希望前辈们帮帮我,这对于理解这些数据的产生有很大意义!
搜索更多相关主题的帖子: 二进制 float 磁盘 数据 
2008-02-06 09:32
forever74
Rank: 12Rank: 12Rank: 12
来 自:CC
等 级:贵宾
威 望:49
帖 子:1636
专家分:3940
注 册:2007-12-27
得分:0 
建议系统补习计算机组成原理。
2008-02-06 16:05
蓝色神话
Rank: 2
等 级:论坛游民
威 望:1
帖 子:404
专家分:24
注 册:2006-5-11
得分:0 
这个程序不会向磁盘写入和读取任何东东(指本程序,不包括其调用的模块),它是在主存(RAM)中完成的。要想弄明白怎么回事,建议参看Intel官方发布的参考手册。不要看所谓的计算机组成原理,没什么鸟用!
2008-02-06 16:32



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-199558-1-1.html




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

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