在32位環境下, float佔用32位,double佔用64位,spa
目前C/C++編譯器標準都遵守IEEE制定的浮點數表示法來進行float,double運算。這種結構是一種科學計數法,用符號、指數和
尾數來表示,底數定爲2——即把一個浮點數表示爲尾數乘以2的指數次方再添上符號。下面是具體的規格:
符號位 階碼 尾數 長度
float 1 8 23 32
double 1 11 52 64 .net
下面分別舉例說明:blog
將100分別轉化爲float型和double型的二進制表達。ip
100=(1+1/2+1/16)*2^6內存
轉爲float型爲字符串
100爲正數,符號位爲0,get
階碼,一共8位,由於指數能夠爲負,爲了便於計算,規定都先加上127,在這裏6+127=133轉爲二進制爲10000101編譯器
尾數轉爲1.1001,由於最高位的1 不寫入內存,則尾數轉爲23位二進制爲10010000000000000000000string
合在一塊兒就是01000010110010000000000000000000it
轉爲double型爲
100爲正數,符號位爲0,
階碼,一共11位,由於指數能夠爲負,爲了便於計算,規定都先加上1023,在這裏6+1023=1029轉爲二進制爲10000000101
尾數轉爲1.1001,由於最高位的1 不寫入內存,則尾數轉爲52位二進制爲1001000000000000000000000000000000000000000000000000
合在一塊兒就是0100000001011001000000000000000000000000000000000000000000000000
將float轉爲二進制字符串
將double轉爲二進制字符串
將32位二進制字符串轉爲float
將64位二進制字符串轉爲double