int32 float 在32位內存中內容和佈局

int32 float 在c++中同樣都是32位,但是存儲結構完全不同。

int32 先不說

 

 

float是這樣表達的。關鍵詞IEEE 754

float在內存中 分三部分 s+e+m

 

s  1位 0代表正數 1 負數

e  8位   代表 移多少位 

m 23位 是小數的具體數字  (24位最高位總爲1,所以丟棄不存)

 

 

舉例  45.25 轉換到二進制

 

分兩部分45 和 0.25

 

45二進制0010 1101

 

0.655二進制0.01

 

合在一起0010 1101.01

 

左移5位 才能達到第一位爲1  變成1.0110101 * 2^5 

這個時候 m大概出來了 e和5 有關係 s和正負有關係

繼續

1.0110101 去掉1 之後 0110101 補充0到23位 爲 01101010000000000000000

正數所以s是0

e  左移動5位 5+127 = 132  如果是右移是-5+127   二進制是 10000100

 

三部分和一塊  0     10000100     01101010000000000000000

這就是內存中的具體內容

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章