0

单精度浮点数在VC++6.0中内存格式研究

作者:楼竞  发表于:2003年08月01日 01:34  分类:Program   3,355 次阅读 

问题:在VC++6.0中所使用的float型数据(单精度浮点数),在内存中存储的格式到底是怎样的呢?

有关程序输出结果的详细说明,请参看程序下方MSDN截图上的解释,源代码如下:

#include <iostream.h>

int main()
{
    /* 本程序版权归loujing.com所有,转载请注明出处,谢谢合作! */
    float a;  /* 可以分别让a等于2,-2,4,6,1,0.75,2.5,0.1,0 */
    cout<<"Please Input a Float Number:";
    cin>>a;
    char *p=(char*)&a;
    p+=3; /* 将地址由高到低 */
    int line=0,temp=0;
    while(temp<4)
    {
        for(int i=7;i>=0;i--)
        {
            if(*p&(1<<i)) cout<<'1'; /* 作与运算,如果和1与为1,说明该二进制是1,否则为0,其中左移运算让1不断往高位移动 */
            else cout<<'0';
            line++;
            if(line%4==0) cout<<' ';
        }
        temp++;

        p--;
    }
    cout<<endl;
    return 0;
}

历史上的今天:

  1. 2004:  喜欢在这安静的夜,慢慢得想你(0)
  2. 2004:  希望明天,阳光肆无忌惮(0)

本文固定链接: http://www.loujing.com/blog/33/ | 楼竞网站

给我留言

快捷键:Ctrl+Enter