浮點數float記憶體存放格式  

浮點數(float)變數型別在電腦記憶體中通常都佔用4byte,也就是32bit。存放方式遵循IEEE-754格式標準[1]。此外,任何資料在記憶體中都是以二進制的形式存儲的。

在二進制科學表示法中,浮點數可表示成:S=M*2N,主要由三個部分構成:符號位元+階碼(N)+尾數(M)。對於float型別資料,其二進制有32位元,其中符號位元1個,階碼8個,尾數23個;對於double型別資料,其二進制為64位元,符號位1個,階碼11個,尾數52個。

 

下面舉例說明:

float型別125.5轉換為標準浮點數記憶體存放格式

125.5二進制表示為1111101.1,轉換為科學記號,則表示為1.1111011*26,階碼為6,加上127為133,則表示為10000101,而對於尾數1.1111011將整數恆為1的部分去掉,為1111011,在其後面補0使其達到23個位元,則為11110110000000000000000,最後,前面補上符號位元跟階碼就是最後存放在記憶體的格式,如同:01000010111110110000000000000000

 

float型別0.5轉換為標準浮點數記憶體存放格式

0.5的二進制形式為0.1轉換為科學記號,則為1.0*2-1,階碼為-1,加上127為=126,表示為01111110而對於尾數1.0將整數恆為1的部分去掉,為0在其後面補0使其達到23個位元,則為00000000000000000000000,最後,前面補上符號位元跟階碼就是最後存放在記憶體的格式,如同:00111111000000000000000000000000

 

  • 由上分析可知float型別最大表示範圍為1.11111111111111111111111*2127=3.4*1038
  • 對於double型別記憶體存放方式情況類似,只不過其階碼為11個,偏置量從127變成為1023,尾數有52個。

 

 

[1]、http://zh.wikipedia.org/wiki/IEEE_754

創作者介紹

宇若彎彎

周宇若 發表在 痞客邦 PIXNET 留言(0) 人氣()