找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5398|回复: 0
收起左侧

VC++6.0 中的64位整数以及浮点数格式

[复制链接]
ID:94349 发表于 2015-11-2 14:24 | 显示全部楼层 |阅读模式
// tttt.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"

union w                    //32位单精度浮点数,这里使用了共用体union
{
    unsigned idata;    //32位浮点数的内部二进制表示对应的整数
    float fdata;            //32位浮点数本身
    struct   //各自定义32位浮点数的符号位、指数部分和尾数部分,注意这几个位域的顺序!
    {
        unsigned f:23;    //32位浮点数的23位尾数部分
        unsigned index:8;    //32位浮点数的8位指数部分
        unsigned sign:1;       //32位浮点数的1位符号位部分
    }h;
};

union ww            //
64位双精度浮点数的内部二进制表示对应的整数
{
    __int64 ldata;   
//64位双精度浮点数的内部二进制表示对应的整数,注意__int64   
    double ddata;   
//64位双精度浮点数本身
    struct  
//各自定义64位双精度浮点数的符号位、指数部分和尾数部分,注意这个几个位域的顺序!
     {
        unsigned f1:32;   
//64位双精度浮点数的52位尾数部分的低32位
        unsigned f2:20;  
//64位双精度浮点数的52位尾数部分的高20位
        unsigned index:11;
//64位双精度浮点数的11位指数部分        
        unsigned sign:1;
    //64位双精度浮点数的1位符号位部分
     }h;
};

int main(int argc, char* argv[])
{
    w m;

    m.idata =0x93534253;    //直接用整数表示的32位单精度浮点数
    printf("fdata:%e\n",m.fdata );    //
32位单精度浮点数表示
    printf("size:%d\n",sizeof(w) );    //
32位单精度浮点数占用的字节数           
    printf("idata:%8x\n",m.idata );    //对应的32位整数
    printf("sign:%1x\n",m.h.sign);    //符号位
    printf("index:%2x\n",m.h.index);    //指数部分
    printf("f:%x\n",m.h.f);                    //尾数部分对应的整数

    __int64 longdata;    //64位整数,注意__int64
    ww mm;    //64位双精度浮点数公共体
    mm.ddata =124.235L;    //64位双精度浮点数,这次直接使用浮点数

    printf("ddata:%e\n",mm.ddata );    //
64位双精度浮点数
    printf("size:%d\n",sizeof(ww) );       //占用的字节数
    printf("ldata:%16I64x\n",mm.ldata ); //64位整数的16进制表示,注意
16I64x        printf("sign:%x\n",mm.h.sign);
    printf("index:%x\n",mm.h.index);

    longdata=__int64(mm.h.f1)|(__int64(mm.h.f2)<<32);    //组合成52位尾数部分
    printf("f:%16I64x\n",longdata);        //52位尾数部分

    printf("Hello World!\n");
    return 0;
}







回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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