Doule類型轉成十六進制查看

一直都知道double的存儲格式是IEEE制定的標準,可是歷來沒有看到C++中double是怎麼存的。 測試

今天突發奇想,想看看double在C++是怎麼存儲的。找了好久發現能夠用union輕鬆的完成。 spa

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



根據union的特性,這樣就能夠輕鬆的看到double是怎麼存儲的。

可是,想要輸出的時候又要費一番功夫。緣由是%x只支持32位的十六進制輸出。 code

輸出64位十六進制須要用到%llx。 io

最後給出,測試代碼。 class

#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;

}
相關文章
相關標籤/搜索