C語言深入探索浮點數(shù)的使用秘密_第1頁
C語言深入探索浮點數(shù)的使用秘密_第2頁
C語言深入探索浮點數(shù)的使用秘密_第3頁
C語言深入探索浮點數(shù)的使用秘密_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第C語言深入探索浮點數(shù)的使用秘密目錄一、內(nèi)存中的浮點數(shù)二、浮點數(shù)存儲實例三、浮點類型的秘密四、小結(jié)

一、內(nèi)存中的浮點數(shù)

浮點數(shù)在內(nèi)存的存儲方式為:符號位,指數(shù),尾數(shù)

類型符號位指數(shù)尾數(shù)float1位(第31位)8位(第23--30位)23位(第0--22位)double1位(第63位)11位(第52--62位)52位(第0--51位)

注:float與double類型的數(shù)據(jù)在計算機內(nèi)部的表示法是相同的,但由于所占存儲空間的不同,其分別能夠表示的數(shù)值范圍和精度不同。

二、浮點數(shù)存儲實例

浮點數(shù)的轉(zhuǎn)換

將浮點數(shù)轉(zhuǎn)換成二進制用科學計數(shù)法表示二進制浮點數(shù)計算指數(shù)偏移后的值

注意:計算指數(shù)時需要加上偏移量,而偏移量的值與類型有關(guān)。

示例:對于指數(shù)6,偏移后的值如下:

float:127+6-133

double:1023+6-1029

實數(shù)8.25的在內(nèi)存中的float表示

8.25的二進制表示:1000.01-1.00001*(2^3)

符號位:0指數(shù):127+3數(shù):00001

內(nèi)存中8.25的float表示:

01000001000001000000000000000000-0x41040000

下面看一下8.25是不是在內(nèi)存中表示為0x41040000吧:

#includestdio.h

intmain()

floatf=8.25;

unsignedint*p=(unsignedint*)

printf("0x%08X\n",*p);

return0;

}

下面為輸出結(jié)果:

三、浮點類型的秘密

首先看一下int類型和float類型的范圍:

int類型的范圍:[-2^31,2^31-1]

float類型的范圍:[-3.4*10^38,3.4*10^38]

這就出現(xiàn)一個問題:int和float都占4個字節(jié)的內(nèi)存,為什么float卻比int的范圍大得多呢

解釋如下:

float能表示的具體數(shù)字的個數(shù)與int相同float可表示的數(shù)字之間不是連續(xù)的,存在間隙float只是一種近似的表示法,不能作為精確數(shù)使用由于內(nèi)存表示法相對復(fù)雜,float的運算速度比int慢得多

注意:double與float具有相同的內(nèi)存表示法,因此double也是不精確的。由于double占用的內(nèi)存較多,所能表示的精度比float高。

下面看一段float類型的不精確示例代碼:

#includestdio.h

intmain()

floatf=3.1415f;

floatfl=123456789;

printf("%0.10f\n",f);

printf("%0.10f\n",fl);

return0;

}

下面為輸出結(jié)果:

這個示例就是表示f和fl小數(shù)點的后10位,結(jié)果表明,float只是一種近似的表示法,不能作為精確數(shù)使用以及float可表示的數(shù)字之間不是連續(xù)的,存在間隙。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論