計算機系統(tǒng)-從應用程序到底層實現(xiàn) 課件 第7講-浮點數(shù)_第1頁
計算機系統(tǒng)-從應用程序到底層實現(xiàn) 課件 第7講-浮點數(shù)_第2頁
計算機系統(tǒng)-從應用程序到底層實現(xiàn) 課件 第7講-浮點數(shù)_第3頁
計算機系統(tǒng)-從應用程序到底層實現(xiàn) 課件 第7講-浮點數(shù)_第4頁
計算機系統(tǒng)-從應用程序到底層實現(xiàn) 課件 第7講-浮點數(shù)_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

《計算機系統(tǒng)》浮點數(shù)《計算機系統(tǒng)》課程教學組2025年春季學期中國超算的高光時刻神威-太湖之光斬獲戈登貝爾獎完全采用自主研發(fā)處理器芯片的神威-太湖之光,不僅接棒天河二號奪得了世界超算TOP500的冠軍,更因其完全自主的處理器芯片、指令系統(tǒng)、編譯系統(tǒng)和操作系統(tǒng)成為首臺不采用美國芯片奪冠的中國超算。神威超算峰值性能12.54億億次浮點運算,持續(xù)性能9.3億億次浮點運算。神威以超強的運算性能支撐中國兩個超算應用工程獲得了戈登貝爾獎。天河二號連續(xù)六次稱雄世界超算TOP50002015年11月16日,中國天河二號超算連續(xù)第6次獲得世界超算TOP500第一名,性能達到平均每秒33.86千萬億次浮點運算。天河二號由國防科技大學研發(fā),有16000個節(jié)點,每個節(jié)點有2顆基于IvyBridge-EXeonE52692處理器和3個XeonPhi,總計有312萬個計算核心。同年,美國宣布禁售中國Xeon芯片,天河二號升級受阻。天河二號浮點運算是衡量超算性能的主要指標浮點數(shù)就是科學計數(shù)法形式的二進制實數(shù)43512二進制小數(shù)IEEE浮點數(shù)標準示例與性質(zhì)舍入與運算C語言中的浮點數(shù)內(nèi)容提要小數(shù)的概念

歷史故事早在公元260年左右,中國數(shù)學家劉徽就創(chuàng)立了十進分數(shù)制表示小數(shù)。他在采用割圓法計算圓周率的時候使用了尺、寸、分、厘、毫、秒,忽7個單位來表示比整數(shù)更小的數(shù)。二進制小數(shù)2i2i-14211/21/41/82-jbibi-1???b2b1b0b-1b-2b-3???b-j???表示方法二進制小數(shù)點右側(cè)的“位”表示2的分數(shù)冪(負冪)可表示形如:的有理數(shù)??????思考:1011.1012?答案:

1011.1012=8+2+1+0.5+0.125=11.625竅門:小數(shù)部分寫成分數(shù),分母為2k,k為小數(shù)位,分子為小數(shù)部分二進制的值。即:.1012=5/8=0.625二進制小數(shù)舉例觀察小數(shù)點右移一位——乘2小數(shù)點左移一位——除2形如

0.111111…2

表示剛好小于1.0的數(shù)1/2+1/4+1/8+…+1/2i+…?1.0也可以簡單的用

1.0–ε來表示十進制二進制53/4

101.11227/8

10.1112113/16

1.11012二進制小數(shù)表示范圍限制只能精確表示諸如x/2k的數(shù)其他的值只能近似表示Value

Representation1/3 0.0101010101[01]…21/5 0.001100110011[0011]…21/10 0.0001100110011[0011]…243512二進制小數(shù)IEEE浮點數(shù)標準示例與性質(zhì)舍入與運算C語言中的浮點數(shù)內(nèi)容提要IEEE浮點數(shù)IEEE754標準于1985建立(之前由每個計算機制造商設計自己的規(guī)則)支持所有主流的CPU面向數(shù)字運算的精確性支持舍入,溢出等操作定義在一組小而一致的規(guī)則上——相當優(yōu)雅,容易理解IEEE浮點數(shù)數(shù)學形式:

(–1)s

M2E符號位S(Sign)確定了這個數(shù)是負數(shù)還是正數(shù),數(shù)值0的符號位特殊處理尾數(shù)M(Significand)

是一個二進制小數(shù),通常規(guī)定在

范圍[1.0,2.0)中。階碼

E

(Exponent)表示2的冪sexpfrac符號階碼尾數(shù)浮點數(shù)類型單精度:32bits雙精度:64bits擴展精度:80bits(Intelonly)sexpfrac18-bits23-bitssexpfrac111-bits52-bitssexpfrac115-bits63or64-bits浮點數(shù)表示方法類別1:規(guī)格化值判斷條件:exp≠000…0且exp≠111…1,即:階碼不為全0或全1階碼字段被解釋為以偏置(

biased)形式表示的有符號整數(shù):E=Exp–BiasExp:無符號數(shù)

exp

Bias=2k-1-1,其中k為階碼位數(shù)(單精度:127,雙精度:1023)尾數(shù):

M=(1.xxx…x)2

xxx…x:frac的位表示最小值

000…0(M=1.0)最大值:111…1(M=2.0–ε)規(guī)格化值示例值:FloatF=15213.0;1521310=111011011011012=1.11011011011012x213尾數(shù)M = 1.11011011011012frac = 110110110110100000000002階碼E = 13Bias = 127Exp = 140 = 100011002Result:

01000110011011011011010000000000符號階碼尾數(shù)浮點數(shù)表示方法類別2:非規(guī)格化值判斷條件:exp=000…0即:階碼為全0階碼:E=1–Bias (為了非規(guī)格化與規(guī)格化值之間的平滑過渡)尾數(shù):

M=(0.xxx…x)2

(xxx…x:frac的位表示)例如:exp=000…0,frac=000…0,此時值為“0”,符號位決定“+0”或者“-0”Exp=000…0,frac≠000…0,此時為非常接近0.0的數(shù)浮點數(shù)表示方法類別3:特殊值判斷條件:exp=111…1,

即:階碼為全1情況1:exp=111…1,frac=000…0,表示的是無窮大,由符號位決定是“+∞”還是“-∞”可用來表示溢出結(jié)果,例如1.0/+0.0=+∞;1.0/-0.0=-∞情況2:exp=111…1,frac≠000…0,表示的是不是一個數(shù)(NaN),用來表示一些無法表示的數(shù),例如:sqrt(-1),∞-∞,∞*∞浮點數(shù)表示方法M為全0M不為全0,NaNS=0,+∞S=1,-∞E為全1E非全0,非全1

規(guī)格化數(shù)E為全0

非規(guī)格化數(shù)階碼E浮點數(shù)表示范圍+∞?∞

0+Denorm+Normalized?Denorm?Normalized+0NaNNaN43512二進制小數(shù)IEEE浮點數(shù)標準示例與性質(zhì)舍入與運算C語言中的浮點數(shù)內(nèi)容提要浮點數(shù)示例8-位浮點數(shù)表示一位符號位四位階碼位三位尾數(shù)位sexpfrac14-bits3-bitsIEEE規(guī)范規(guī)格化數(shù),非規(guī)格化數(shù)能夠表示0,NaN,無窮浮點數(shù)示例最小的非規(guī)格化數(shù)(接近0)最大的非規(guī)格化數(shù)最小的規(guī)格化數(shù)從下最靠近1從上最靠近1最大的規(guī)格化數(shù)非規(guī)格化數(shù)規(guī)格化數(shù)sexpfrac E

Value

00000000 -6 000000001 -6 1/8*1/64=1/51200000010 -6 2/8*1/64=2/512……

……00000110 -6 6/8*1/64=6/51200000111 -6 7/8*1/64=7/51200001000 -6 8/8*1/64=8/51200001001 -6 9/8*1/64=9/512……

……00110110 -1 14/8*1/2=14/1600110111 -1 15/8*1/2=15/1600111000 0 8/8*1=100111001 0 9/8*1=9/800111010 0 10/8*1=10/8……

……01110110 7 14/8*128=22401110111 7 15/8*128=24001111000 n/a inf取值分布6位浮點數(shù)表示

e=33位階碼f=22位尾數(shù)Bias38valuessexpfrac13-bits2-bits取值分布(局部放大)6位浮點數(shù)表示

e=33位階碼f=22位尾數(shù)Bias3sexpfrac13-bits2-bits100000 -0100001 -1/16100010 -2/16100011 -3/16+0000000 1/160000012/16000010 3/16000011 浮點數(shù)屬性描述階碼尾數(shù)數(shù)值000…000…000.0最小的非規(guī)格化正數(shù)Single≈1.4x10–45Double≈4.9x10–32400…000…012–{23,52}x2–{126,1022}最大的非規(guī)格化正數(shù)Single≈1.18x10–38Double≈2.2x10–30800…0011…11(1.0–ε)x2–{126,1022}最小的規(guī)格化正數(shù)正好比最大的非規(guī)格化正數(shù)大100…0100…001.0x2–{126,1022}101…1100…001.0最大的規(guī)格化正數(shù)Single≈3.4x1038Double≈1.8x1030811…1011…11(2.0–ε)x2{127,1023}43512二進制小數(shù)IEEE浮點數(shù)標準示例與性質(zhì)舍入與運算C語言中的浮點數(shù)內(nèi)容提要浮點運算思路x+fy=Round(x+y)x

fy=Round(x

y)基本思路首先計算精確結(jié)果然后通過“舍入”來得到近似結(jié)果浮點運算溢出溢出由于浮點數(shù)的表示方式是有限位數(shù)的二進制(單精度32位,雙精度64位),在運算時也會出現(xiàn)整數(shù)運算中同樣的溢出現(xiàn)象。1966年6月4日,Ariane5火箭初次航行。由于軟件工程師沒有考慮浮點數(shù)溢出的問題,控制系統(tǒng)出現(xiàn)了致命錯誤,導致了災難性的后果:發(fā)射后僅僅37秒,火箭解體并爆炸,火箭上搭載的價值5億美元的通信衛(wèi)星也付之一炬。浮點數(shù)的舍入

舍入方式()

$1.40 $1.60 $1.50 $2.50 –$1.50Towardszero $1 $1 $1 $2 –$1Rounddown(?

) $1 $1 $1 $2 –$2Roundup(+

) $2 $2 $2 $3 –$1NearestEven(默認) $1 $2 $2 $2 –$2各種模式的優(yōu)點是什么?向偶數(shù)舍入能找到最接近的匹配值;其它三種用于計算上界和下界。向偶數(shù)舍入缺省的舍入方案指的是中間值應當向偶數(shù)舍入,其他的方案都會產(chǎn)生統(tǒng)計偏差也可以舍入到其他數(shù)位中間值舍入到偶數(shù)例如:舍入到百分位 1.2349999 1.23 (Lessthanhalfway) 1.2350001 1.24 (Greaterthanhalfway)

1.2350000 1.24 (Halfway—roundup) 1.2450000 1.24 (Halfway—rounddown)二進制舍入二進制數(shù)舍入“偶數(shù)”是指

0“中間值”是指舍入位的右邊正好是

100…2的形式例如:舍入到1/4(小數(shù)點右邊兩位)Value Binary Rounded Action RoundedValue23/32 10.000112 10.002 (<1/2—down) 223/16 10.001102 10.012 (>1/2—up) 21/427/8 10.111002 11.002 (1/2—up) 325/8 10.101002 10.102 (1/2—down) 21/2浮點數(shù)乘法(–1)s1

M12E1x(–1)s2

M22E2精確結(jié)果:(–1)s

M2E符號位

s: s1^

s2尾數(shù)M: M1x

M2階碼

E: E1+

E2調(diào)整如果M≥2,M

右移一位,E=E+1如果

E超出表示范圍,溢出將M

舍入到frac

的位數(shù)范圍浮點數(shù)加法①對階,小階向大階對齊②尾數(shù)進行加法運算③結(jié)果規(guī)格化并進行舍入處理④判斷溢出浮點數(shù)加法①對階,小階向大階對齊兩個浮點數(shù)進行加減運算時,首先要使兩個數(shù)的階碼相同,即小數(shù)點的位置對齊。若兩個數(shù)的階碼相同,表示小數(shù)點的位置是對齊的,就可以對尾數(shù)進行加減運算。反之,若兩個數(shù)的階碼不相同,表示小數(shù)點的位置沒有對齊,此時必須使兩個數(shù)的階碼相同,這個過程稱為對階。將原來階碼小的數(shù)的尾數(shù)右移|△E|位,其階碼值加上|△E|,即每右移一次尾數(shù)要使階碼加1,則該浮點數(shù)的值不變(但精度變差了)浮點數(shù)加法②尾數(shù)進行加法運算實現(xiàn)尾數(shù)的加運算,對兩個完成對階后的浮點數(shù)執(zhí)行求和操作。浮點數(shù)加法③結(jié)果規(guī)格化并進行舍入處理如果尾數(shù)不是規(guī)格化數(shù),則需要進行規(guī)格化處理,并進行舍入。④判斷溢出根據(jù)階碼來判斷是否溢出浮點數(shù)加法的數(shù)學特性與阿貝爾群比較有交換性沒有結(jié)合性(由于舍入)3.14+1e10-1e10=0

vs.3.14+(1e10-1e10)=3.14單調(diào)性a≥b?a+c≥b+c?Exceptforinfinities&NaNs浮點數(shù)乘法的數(shù)學特性可交換性a*b=b*a不可結(jié)合性a*b*c≠a*(b*c)不具備分配性a*(b+c)≠a*b+a*c單調(diào)性a≥b&c≥0?a*c≥b*c(Exceptforinfinities&NaNs)43512二進制小數(shù)IEEE浮點數(shù)標準示例與性質(zhì)舍入與運算C語言中的浮點數(shù)內(nèi)容提要

溫馨提示

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

評論

0/150

提交評論