回覆列表
  • 1 # dadazhu1

    浮點數儲存的位元組格式如下:

    地址 +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 尾數也是0。

    浮點數-12.5作為一個十六進位制數0xC1480000儲存在儲存區中,這個值如下:

    地址 +0 +1 +2 +3

    內容0xC1 0x48 0x00 0x00

    浮點數和十六進位制等效儲存值之間的轉換相當簡單。下面的例子說明上面的值-12.5如何轉

    換。

    浮點儲存值不是一個直接的格式,要轉換為一個浮點數,位必須按上面的浮點數儲存格式表

    所列的那樣分開,例如:

    地址 +0 +1 +2 +3

    格式 SEEE EEEE EMMM MMMM MMMM MMMM MMMM MMMM

    二進位制 11000001 01001000 00000000 00000000

    十六進位制 C1 48 00 00

    從這個例子可以得到下面的資訊:

    符號位是1 表示一個負數

    冪是二進位制10000010或十進位制130,130減去127是3,就是實際的冪。

    尾數是後面的二進位制數10010000000000000000000

    在尾數的左邊有一個省略的小數點和1,這個1在浮點數的儲存中經常省略,加上一個1和小數

    點到尾數的開頭,得到尾數值如下:

    1.10010000000000000000000

    接著,根據指數調整尾數.一個負的指數向左移動小數點.一個正的指數向右移動小數點.因為

    指數是3,尾數調整如下:

    1100.10000000000000000000

    結果是一個二進位制浮點數,小數點左邊的二進位制數代表所處位置的2的冪,例如:1100表示

    (1*2^3)+(1*2^2)+(0*2^1)+(0*2^0)=12。

    小數點的右邊也代表所處位置的2的冪,只是冪是負的。例如:.100...表示(1*2^(-1))+

    (0*2^(-2))+(0*2^(-2))...=0.5。

    這些值的和是12.5。因為設定的符號位表示這數是負的,因此十六進位制值0xC1480000表示-

    12.5。

  • 中秋節和大豐收的關聯?
  • 夏天,歐美風格怎樣穿才高階又時髦?