国产成人精品三级麻豆,色综合天天综合高清网,亚洲精品夜夜夜,国产成人综合在线女婷五月99播放,色婷婷色综合激情国产日韩

當(dāng)前位置:首頁 > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 講師博文 > 嵌入式學(xué)科:float

嵌入式學(xué)科:float 時間:2018-12-24      來源:華清遠(yuǎn)見

linux C 中用float和double 表示浮點數(shù),在32位電腦中 float 占4字節(jié),double占8字節(jié)(可以使用printf(“%u  %u \n”, (unsined int)sizeof(float), (unsined int)sizeof(double)); 語句來測試兩個數(shù)據(jù)類型占的內(nèi)存空間大。。那么具體float他能表示的數(shù)值取值范圍是多少呢?大家知道 int 整型在計算機(jī)中是以補(bǔ)碼的形式存儲,取值范圍是(-2147483648 ~ 2147483647),取值范圍和他在內(nèi)存中的表示方式有直接的關(guān)系。

C語言中的浮點數(shù)遵循IEEE(美國電氣和電子工程師學(xué)會)二進(jìn)制浮點數(shù)算術(shù)標(biāo)準(zhǔn)(IEEE754)是20世紀(jì)80年代以來最廣泛使用的浮點數(shù)運(yùn)算標(biāo)準(zhǔn)。如果知道float 在內(nèi)存是如何利用4個字節(jié)的內(nèi)存空間的,那么就知道float他的取值范圍了。Float是有符號數(shù),它在內(nèi)存中是以符號位、指數(shù)位和尾數(shù)位三個部分的形式進(jìn)行存儲的。其中最高位表示符號位占1bit表示正負(fù),緊跟其后的8位表示指數(shù)部分以無符號形式存儲所以取值范圍是0-255,,剩余的23位表示尾數(shù)位 :

第31比特位:1bit(符號位S) 

第30到23比特位 8bits(指數(shù)位P) 

第22到0 比特位  23bits(尾數(shù)位M)

嵌入式學(xué)科,float

表示公式: v = ((-1)^S)*(2(P-126))*(0.M)

S是符號位,只有0和1,分別表示正負(fù)。

P是階碼,通常使用移碼表示(移碼和補(bǔ)碼只有符號位相反,其余都一樣。對于正數(shù)而言,原碼、反碼和補(bǔ)碼都一樣;對于負(fù)數(shù)而言,補(bǔ)碼就是其絕對值的原碼全部取反,然后加1)。階碼可以為正數(shù),也可以為負(fù)數(shù),為了處理負(fù)指數(shù)的情況,實際的指數(shù)值按要求需要加上一個偏差(Bias)值作為保存在指數(shù)域中的值,單精度數(shù)的偏差值為127,雙精度數(shù)的偏差值為1023。例如,單精度的實際指數(shù)值0在指數(shù)域中將保存為127,而保存在指數(shù)域中的64則表示實際的指數(shù)值-63,偏差的引入使得對于單精度數(shù),實際可以表達(dá)的指數(shù)值的范圍就變成-127到128之間(包含兩端)。

M為尾數(shù),其中單精度數(shù)為23位長,雙精度數(shù)為52位長。IEEE標(biāo)準(zhǔn)要求浮 點數(shù)必須是規(guī)范的。這意味著尾數(shù)的小數(shù)點左側(cè)必須為1,因此在保存尾數(shù)的時候,可以省略小數(shù)點前面這個1,從而騰出一個二進(jìn)制位來保存更多的尾數(shù)。這樣實 際上用23位長的尾數(shù)域表達(dá)了24位的尾數(shù)。例如對于單精度數(shù)而言,二進(jìn)制的1001.101(對應(yīng)于十進(jìn)制的9.625)可以表達(dá)為1.001101 × 23,所以實際保存在尾數(shù)域中的值為00110100000000000000000,即去掉小數(shù)點左側(cè)的1,并用0在右側(cè)補(bǔ)齊。

嵌入式學(xué)科,float

浮點數(shù)的表示約定

單精度浮點數(shù)和雙精度浮點數(shù)都是用IEEE 754標(biāo)準(zhǔn)定義的,其中有一些特殊約定,例如:

  1、當(dāng)P=0,M=0時,表示0。

2、當(dāng)P=255,M=0時,表示無窮大,用符號位來確定是正無窮大還是負(fù)無窮大。

  3、當(dāng)P=255,M≠0時,表示NaN(Not a Number,不是一個數(shù))。

等等。。。

將二進(jìn)制轉(zhuǎn)換為 十進(jìn)制浮點數(shù)  單精度

例子:

0x00280000

轉(zhuǎn)換成二進(jìn)制

00000000001010000000000000000000

符號位 指數(shù)部分(8位) 尾數(shù)部分

0 00000000 01010000000000000000000

符號位=0;因指數(shù)部分=0,則:尾數(shù)部分M為:

0.01010000000000000000000=0.3125

該浮點數(shù)的十進(jìn)制為:

(-1)^0*2^(-126)*0.3125

=3.6734198463196484624023016788195e-39

嵌入式學(xué)科,float

標(biāo)準(zhǔn)文檔 //754r.ucbtest.org/web-2008/drafts/archive/2006-10-04.pdf

上一篇:嵌入式學(xué)科:冒泡排序

下一篇:C語言指針

熱點文章推薦
華清學(xué)員就業(yè)榜單
高薪學(xué)員經(jīng)驗分享
熱點新聞推薦
前臺專線:010-82525158 企業(yè)培訓(xùn)洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠(yuǎn)見科技集團(tuán)有限公司 版權(quán)所有 ,京ICP備16055225號-5,京公海網(wǎng)安備11010802025203號

回到頂部