float f1=-0x3d800005;
printf("f1:%f\n",f1);
printf("f1:%x\n",f1);
IEEE標準中float為32位數,31位為符號位,【31,23】為指數位,[22,0]為尾數位。
0x3d800005的二進制數為:
00111101100000000000000000001001
將其分段的話為如下格式
|0| 符號位
|01111011|為指數位,其演算法為127-3轉二進制
|0·····01001|為尾數位
根據規則想要的輸出應該是1.125但輸出結果確是0x3d800005的十進制轉float的值,請問一下如何才能用8個16進制數直接創造一個float
uj5u.com熱心網友回復:
union U {float f;
int d;
} u;
u.d=-0x3d800005;
printf("%f\n",u.f);
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/214407.html
標籤:C語言
上一篇:小B的任務
