日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C/C++ 16进制转IEEE754

發布時間:2023/12/18 c/c++ 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C/C++ 16进制转IEEE754 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載地址:單片機

將(32位)16進制IEEE-754標準浮點數就是用十六進制表示浮點,稱為單精度浮點數。
舉例:已知一個數為2.5,IEEE-754標準浮點數表示為 40200000H。
16進制浮點數與十進制的轉化步驟:
對于大小為32-bit的浮點數(32-bit為單精度,64-bit浮點數為雙精度,80-bit為擴展精度浮點數),
1、其第31 bit為符號位,為0則表示正數,反之為復數,其讀數值用s表示;
2、第30~23 bit為冪數,其讀數值用e表示;
3、第22~0 bit共23 bit作為系數,視為二進制純小數,假定該小數的十進制值為x;
則按照規定,該浮點數的值用十進制表示為:= (-1)^s * (1 + x) * 2^(e - 127)

例如:對于16進制浮點數49E48E68H來說,
1、其第31 bit為符號位,為0則表示為正數;
2、第30~23 bit依次為100 1001 1,讀成十進制就是147,即e = 147。
3、第22~0 bit依次為110 0100 1000 1110 0110 1000,也就是二進制的純小數0.110 0100 1000 1110 0110 1000,其十進制形式為0.78559589385986328125,即x = 0.78559589385986328125。即x = 0.78559589385986328125。

可知:16進制浮點數49E48E68H的10進制表示:
=(-1)^s * (1 + x) * 2^(e - 127)
=(-1)^0 * (1+ 0.78559589385986328125) * 2^(147-127) = 1872333。
?

#include <iostream> #include <stdlib.h> #include <stdio.h> #include <math.h> float hextofloat (unsigned int number) {//符號位unsigned int sign = number >>31;//冪數int exponent = ((number >> 23) & 0xff) - 0x7F;//尾數unsigned int mantissa = number << 9; float value = 0; float mantissa2;value = 0.5f;mantissa2 = 0.0f; while (mantissa) {if (mantissa & 0x80000000) mantissa2 += value; mantissa <<= 1; value *= 0.5f; }value = (1.0f + mantissa2) * (pow (2, exponent)); if (sign) value = -value;return value; }int main() {unsigned int a=0x42CA3F44;float ans=hextofloat (a); printf("%.3f\n",ans);return 0; }

總結

以上是生活随笔為你收集整理的C/C++ 16进制转IEEE754的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。