浮點數單精度浮點數與雙精度浮點數在計算機中的存儲_第1頁
浮點數單精度浮點數與雙精度浮點數在計算機中的存儲_第2頁
浮點數單精度浮點數與雙精度浮點數在計算機中的存儲_第3頁
浮點數單精度浮點數與雙精度浮點數在計算機中的存儲_第4頁
免費預覽已結束,剩余1頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、浮點數在計算機中的存儲十進制浮點數格式:浮點數格式使用科學計數法表示實數??茖W計數法把數字表示為系數(coefficient)(也稱為尾數(mantissa),和指數(exponent)兩部分。比如3.684*10A2.在十進制中,指數的基數為10,并且表示小數點移動多少位以生成系數。每次小數點向前移動時,指數就遞增;每次小數點向后移動時,指數就遞減。例如,25.92可表示為2.592*10人1,其中2.592是系數,值10人1是指數。必須把系數和指數相乘,才能得到原始的實數。另外,如0.00172可表示為1.72*10人-3,數字1.72必須和10人-3相乘才能獲得原始值。二進制浮點格式:計

2、算機系統使用二進制浮點數,這種格式使用二進制科學計數法的格式表示數值。數字按照二進制格式表示,那么系數和指數都是基于二進制的,而不是十進制,例如1.0101*2人2.在十進制里,像0.159這樣的值,表示的是0+(1/10)+(5/100)+(9/1000)。相同的原則也適用二進制。比如,1.0101乘以2A2后,生成二進制值101.01,這個值表示二進制整數5,加上分數(0/2)+(1/4)。這生成十進制值5.25。下表列出幾個二進制小數以及它們對應的十進制值:二進制十進制分數十進制值0.11/20.50.011/40.250.0011/80.1250.00011/160.06250.000

3、011/320.031250.0000011/640.015625幾個二進制浮點例子:二進制十進制分數十進制值10.1012+1/2+1/82.62510011.00119+1/819.12510110.110122+1/2+1/4+1/1622.81251101.01113+1/4+1/813.375編寫二進制浮點值時,二進制通常被規格化了。這個操作把小數點移動到最左側的數位,并且修改指針進行補償。例如1101.011變成1.101011*2人3浮點數的存儲 IEEE標準754浮點數標準使用3個成分把實數定義為二進制浮點值: 符號 有效數字指數符號位表示值是負的還是正的。符號位中的1表示負值

4、,0表示正值。有效數字部分表示浮點數的系數(coefficient)(或者說尾數(mantissa)。系數可以是規格化的(normalized),也可以是非規格化的(denormalized)。所謂規格化,就是任何一個數的科學計數法的表示都可為1.xxx*2An,既然小數點左邊的一位都是1,就可以把這一位省略。單精度浮點數23bit的尾數部分,可表示的精度卻為24位,道理就在這里。指數表示浮點數的指數部分,是一個無符號整數。因為指數值可以是正值,也可以是負值,所以通過一個偏差值對它進行置偏,及指數的真實值=指數部分的整數一偏差值。對于32位浮點數,偏差值=127;對于64位浮點數,偏差值=10

5、23.二進制浮點格式符號位指數系數浮點數的這3個部分被包含在固定長度的數據格式之內。IEEE標準754定義了浮點數的兩種長度:32位單精度和64位雙精度可以用于表示有效數字的位的數量決定精度。下圖顯示了兩種不同精度類型的位布局:31302322指數有效數字單精度636252510指數后效數字J弓雙精度單精度浮點使用23位有效數字值。但是,浮點格式假設有效數字的整數部分永遠為1,并且不在有效數字值中使用它。這樣實際上有效數字的精度達到了24位。指數使用8位值,它的范圍從0255,稱為移碼指數,意思是必須從指數中減去一個數(稱為偏移量或者是偏差值),對單精度浮點數而言,這個值是127。當指數是0和

6、255時,指數由別的含義,因此實際指數的范圍是從-126至IJ+127(二進制指數),這樣整個浮點數的范圍則為:(1.18*10人-38-1.0X2-126至U3.40*10A381.11X2A127)。指數0和255用于特殊用途。如果指數從1變化到254,則由s(符號位)、e(指數)和f(有效數)來表示的數為:.(-1)SXhfx2s- -1的s次哥是數學上的一種方法,意思是如果s為0,則數是正的(因為任何數的0次哥等于1);如果s為1,則數是負的(因為-1的1次塞為-1)”。 表達式的另一部分是1.f,意思是1后面為二進制小數點,再后面為23位的有效小數部分。它乘以2的哥,其中指數為內存中

7、的8位移碼指數減去127。 注意,還有一種特殊的情況0: 如果e等于0,且f等于0,則數為0。通常,所有32位均為0則表示0。但是符號位可以是1,在這種情況下,數被解釋為-0。-0可以表示一個很小的數,小到在單精度格式中不能用數字和指數來表示。盡管如此,它們然小于0。 如果e等于0,且f不等于0,則數是有效的。但是,它不是規格化的數,它等于 1)-LfX2一注意,二進制小數點左邊的有效數為0。 如果e等于255,且f等于0,則數為正或負無窮大,這取決于符號so 如果e等于255,且f不等于0,該值被認為不是一個數”,簡寫為NaN。NaN可以表示一個不知道的數或者一個無效操作的結果。Q:3.40

8、*10A38是值怎么來的?A:在單精度浮點格式中可以表示的最大規格化的正或負二進制數為:1J111II11II11II1111II111X2137TWO換算成10進制約等于:3.402823669e+38,這里1.111.111近似為2,則2*2A127=2A128=3.402823669e+38.Q:1.18*10A-38的值是怎么來的?A:通常,單精度浮點格式中可以表示的最小規格化的正或負二進制數為:1,00000000000000000000000X23TWO換算成10進制就是:1.175494351e-38,也就是約等于1.18*10A-38。Q:單精度浮點24位換算為十進制后,為什么

9、精度是7位?制為1023),則它近似等于3位十進制都設置為9,即999。或者:A:10位二進制數近似等于3位十進制數。也就是說,若10位都置1(即十六進制為3FFh,十進2i嗅10、這種關系表明按單精度浮點格式存放的24位二進制數大約與7位十進制數等效。因此,也可以說單精度浮點格式提供24位二進制精度,或大約7位十進制精度。可以這么設,一個2相當于10”次方,即10Ak=2。那么2的24次方2A24=10A24k。從10Ak=2可以知道k=log10(2)0.301。所以,2的24次方換算到十進制,相當于有24*log10(2)約等于7.2個精度。Q:262144.00和262144.01是一

10、樣的么?A:當然不是一樣的!但是在計算機里,單精度的存儲中,它們卻是一樣的!看這兩個數作為單精度浮點數時在計算機里是怎么存儲的:兩者被存儲為同一個數字:1.00()000(M)0()()0()()0()0000()()0nvox21H。那這是為什么呢?原因是,規格化單精度浮點里,在小數點后有23位數,而1.000.000會經過2A18次方的運算后小數點會往前移動18個,那么小數點后面就只剩下5位,這時即使是1/(2人5)=0.03125都要比0.01大,所以沒辦法,只能存為一樣的數。那么上面的問題如何避免呢?答案是,使用雙精度浮點數。雙精度浮點數的指數偏移量為1023,即3FFh,所以,以這種格式存放的數為:(-1),XLfx2*m它具有與單精度格式中所提到適用于0、無窮大和NaN等情形相同的規則。(1.00).)乂27儂最小的雙精度浮點格式的正數或負數為:52個0最大的數為:一個用十進制表示,它的范圍近似為2.2250738585()72014X1。-L797693134K623I58X。10的308次哥是一個非常大的數,在1后面有308個十進制零。53位有效數(包括沒有包含在內的那1位)的精度與16個十進制位表示的精度十分接近。相對于單精度浮點

溫馨提示

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

評論

0/150

提交評論