float爲浮點型,32位機器中佔4字節共32bit,下標0~31.spa
31 位:符號位,正數爲0,負數爲1。內存
30 位:方向位。小數點左移位1,右移爲0。it
23~29:共7位,指數位。=指數-1。二進制
0~22:共23位,尾數。float
轉換方法:方法
1 整數部分轉成二進制。整數不停的除2,直到商位0。逆序取出每次的餘數。數據
2 小數部分轉成二進制。小數部分不停的乘2,直到結果的小數部分位0.正序取出每次的商。co
3 第一步和第二步獲得數據拼接。第一步獲得的結果在小數點左邊,第二步獲得的在小數點右邊。轉爲科學計數法。
4 拼接。按照上面的bit說明填充。尾數不夠,右邊補0.
舉例:寫出8.25 12.5 0.25 都是如何在內存中保存。
8.25的存儲計算方法:
8/2=4 餘 0
4/2=2 餘0
2/2=1 餘0
1/2=0 餘1 商位0 那麼中止。 獲得逆序 1000
二、小數部分0.25轉位二進制:
0.25*2=0.5 整數部分 0
0.5*2=1.0 整數部分 1 次是小數部分爲0 中止。獲得正序 01
三、用2進制:
1000.01 = 1.00001 * 2的3次方。小數點左移了3位。
四、
31 :0
30: 1
指數位:3-1=2=0000010
尾數:0000 1000 0000 0000 0000 000
最終:0100 0001 0000 0100 0000 0000 0000 0000=0x41040000
以上能夠看出 若是是-8.25 只須要最高位變爲1便可。最終:1100 0001 0000 0100 0000 0000 0000 0000 = 0xC1040000
12.5的轉換過程:
1 整數部分:
12/2 = 6 餘 0
6/2=3 餘 0
3/2=1 餘1
1/2=0 餘1
獲得餘數逆序 1100
2 小數部分:
0.5*2=1.0 整數爲1
獲得 1
3: 獲得二進制:1100.1=1.1001*2的3次方
4: 0 1 0000010 1001 0000000000000000000 = 0x41480000
0.25轉化過程
1 整數部分轉換爲 0
2 小數部分0.25
0.25*2=0.5 整數部分0
0.5*2=1.0 整數部分1
3 獲得0.01 = 1.0*2的-2次方
4 獲得:0 0 1111101 0000000000000000000000=0x3E800000 指數部分 -2-1=-3=FD=11111101 拿走7位