學習體會 float32浮點數

2021-10-17 18:40:49 字數 1632 閱讀 3427

float結構如下圖:

float的數學計算式如下:

其中,符號位:sign,正數為0,負數為1

指數字:exponent,二進位制數轉10進製數,範圍是-127(0000 0000)~127(1111 1110)

尾數字:base,二進位制數

舉個例子:

假設有個浮點數 -12.75 ,我們把它轉換成二進位制

因為它是負數,所以符號位就是 1 (相反,正數的話符號位就是 0 )

我們先將 12.75(忽略負號)轉換成二進位制小數 1100.11 (這裡不明白怎麼轉換的,再去看看上面兩張圖)

然後再將這個二進位制小數轉換成科學計數法 1.10011 *2^3 ,這時候我們就得到了尾數部分,為小數部分 10011,後面補 0,佔滿23位,即 10011000000000000000000

最後,我們只差指數字沒有填進去了,理所當然的,指數字就是要把 2^3的指數 3 填進去,怎麼填進去呢(注意:指數也有可能是負數)

填進去的方法就是 加上127 然後 轉 2 進製 再填進去,具體就是 3 + 127 = 130 => 10000010

輸出float的十六進製制數(c/c++) :

#include#includeusing namespace std;

void main(int argc, char* ar**)

printf("\n");

printf("\na=%e", a);

}//

float的正數最大值 :

十六進製制0x7f7fffff

二進位制0111 1111 0111 1111 1111 1111 1111 1111

數學式為

理論值約為3.8e+38

實際c計算得到如下:

在c中,對於0x7fffffff,表示0111 1111 1111 1111 1111 1111 1111 1111,輸出為nan

float的正數最小值:

十六進製制0x00000001

二進位制0000 0000 0000 0000 0000 0000 0000 0001

數學式為

微控制器 MATLAB浮點數(float32)通訊

程式思路 描述 把float型資料原封不動的按照儲存4位元組傳送 輸入 要傳送的浮點數 輸出 無 void float send float data 這裡想請教一下大家,為什麼add unsigned char data 中要帶 unsigned char 不然就給waring point to ...

浮點數 float和double

浮點數使用格式符 f 控制,預設保留小數點後6 位數字。所以當判斷浮點數是否為0的時候,要與 0.000001 和0.000001比較。if abs x 0.000001 有時我們希望自己控制列印的寬度和小數字數,這時就應該使用 m.nf 格式,其中m 表示列印的寬度,n 表示小數點後的位數。m是總...

c語言浮點數的體會

浮點數的型別分3類 1.float,單精度浮點數 占用4個位元組,表示範圍 3.4e 38 3.4e38 2.double,雙精度浮點數 占用8個位元組,表示範圍 1.7e 308 1.7e308 3.long double,長 雙精度浮點數 占用10個位元組,表示範圍 1.2e 4932 1.2e...