Doule类型转成十六进制查看

一直都知道double的存储格式是IEEE制定的标准,但是从来没有看到C++中double是怎么存的。

今天突发奇想,想看看double在C++是怎么存储的。找了很久发现可以用union轻松的完成。

union Double2Int
{
	double d;
	unsigned __int64 i;
};



根据union的特性,这样就可以轻松的看到double是怎么存储的。

但是,想要输出的时候又要费一番功夫。原因是%x只支持32位的十六进制输出。

输出64位十六进制需要用到%llx。

最后给出,测试代码。

#include <stdio.h>

union Double2Int
{
	double d;
	unsigned __int64 i;
};
int main()
{
	Double2Int d2i;

	d2i.d = -1;
	printf("double : %lf\tHex : %llx\n", d2i.d, d2i.i);

	return 0;

}




转载于:https://my.oschina.net/u/1171424/blog/346468

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值