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
這就是內存中的具體內容