浮點數在記憶體中的儲存方式

2022-09-04 10:42:06 字數 861 閱讀 4260

任何資料在記憶體中都是以二進位制的形式儲存的。浮點數也不例外。浮點的儲存方式與整數有一點區別就是:浮點的儲存方式是採用:符號位+階碼+尾數的形式。

符號位:在計算機記憶體中,通常都是以一位表示正數(用0表示)或者負數(用1表示)

階碼:在機器中表示乙個浮點數時需要給出指數,這個指數用整數形式表示,這個整數叫做階碼,階碼指明了小數點在資料中的位置。它與科學計數法中的冪是乙個道理。

尾數:指小數點後面的數

例:將133.5f化為二進位制數。首先將整數部分化為二進位制數為

1000 0101

然後將小數部分化為二進位制為0.1。則133.5的二進位制數為

1000 0101.1

而在計算機中是怎麼樣儲存這個數的呢?首先將這個二進位制數用「科學計數法」的形式表示出來就是

1.0000 1011 * 2^7

這裡階碼採用移碼表示,對於float型資料其規定偏置量為127,階碼位數為8位(對於雙精度來說,其規定的偏置量為1023。階碼位數為11位。),也就是說這裡的階碼應該為127+7 = 134。將其化為二進位制數為

1000 0110

由於規定小數點前面都為1,因此在計算機中,將不會儲存小數點前面的1。這裡的尾數就為00001011。其後全部補0,將其補充到23位。這裡是正數,所以符號位為0。

在儲存時,符號位在最前面,其次是階碼,最後放尾數。因此數字在記憶體中儲存為:

0100 0011 0000 0101 1000 0000 0000 0000

其十六進製制表示為:

0x43058000

以下為測試**:

#include int

main()

上機執行可得到輸出結果為: 0x43058000

浮點數在記憶體中的儲存方式

浮點數儲存的位元組格式如下 位址 0 1 2 3 內容 seee eeee emmm mmmm mmmm mmmm mmmm mmmm 這裡s 代表符號位,1是負,0是正 e 偏移127的冪,二進位制階碼 eeeeeeee 127。m 24位的尾數儲存在23位中,只儲存23位,最高位固定為1。此方法...

浮點數在記憶體中的儲存方式

浮點數儲存的位元組格式如下 位址 0 1 2 3 內容 seee eeee emmm mmmm mmmm mmmm mmmm mmmm 這裡s 代表符號位,1是負,0是正 e 偏移127的冪,二進位制階碼 eeeeeeee 127。m 24位的尾數儲存在23位中,只儲存23位,最高位固定為1。此方法...

浮點數在記憶體中的儲存方式

浮點數儲存的位元組格式如下 位址 0 1 2 3 內容 seee eeee emmm mmmm mmmm mmmm mmmm mmmm 這裡s 代表符號位,1是負,0是正 e 偏移127的冪,二進位制階碼 eeeeeeee 127。m 24位的尾數儲存在23位中,只儲存23位,最高位固定為1。此方法...