浮點型數據

浮點型數據

浮點型數據定義 浮點型數據分為 浮點型常量和浮點型變數 浮點型常量 實型也稱為浮點型。實型常量也稱為實數或者浮點數。在C語言中,實數隻採用十進制。它有二種形式: 十進制數形式指數形式。

數據介紹

1.十進制數形式

由數碼0~ 9和小數點組成。例如:0.0,.25,5.789,0.13,5.0,300.,-267.8230等均為合法的實數。

2.指數形式

由十進制數,加階碼標誌“e”或“E”以及階碼(只能為整數,可以帶符號)組成。其一般形式為a E n (a為十進制數,n為十進制整數)其值為 a*10,n 如: 2.1E5 (等於2.1*10的5次方), 3.7E-2 (等於3.7*10的-2次方) 0.5E7 (等於0.5*10的7次方), -2.8E-2 (等於-2.8*10的-2次方),以下不是合法的實數 345 (無小數點) E7 (階碼標誌E之前無數字)  -5 (無階碼標誌) 53.-E3 (負號位置不對) 2.7E (無階碼)

標準C允許浮點數使用後綴。後綴為“f”或“F”即表示該數為浮點數。如356f。例2.2說明了這種情況:

void main()

{

printf("%f\n%f\n",356.,356f);

}

void 指明main不返回任何值 利用printf顯示結果 結束

浮點型變數:

實型變數分為兩類:單精度型和雙精度型,

其類型說明符為float 單精度說明符,double 雙精度說明符。在Turbo C中單精度型占4個位元組(32位)記憶體空間,其數值範圍為3.4E-38~3.4E+38,只能提供七位有效數字。雙精度型占8 個位元組(64位)記憶體空間,其數值範圍為1.7E-308~1.7E+308,可提供16位有效數字。

實型變數說明的格式和書寫規則與整型相同。

例如: float x,y; (x,y為單精度實型量)

double a,b,c; (a,b,c為雙精度實型量)

實型常數不分單、雙精度,都按雙精度double型處理。

相互轉換

標準4位元組浮點型在計算機里存儲方式如下圖

浮點型數據 浮點型數據

IEEE754 標準中浮點數表示格式IEEE規定的浮點數表示法是一種科學計數法,用符號(正或負)、指數和尾數來表示,底數被確定為2。也就是說浮點數被表示為 尾數乘以2的 指數次方再帶上符號。具體格式如下:

符號域 指數域 小數域 指數偏移量
單精度浮點數 1 位[31] 8位[30-23] 23位[22-00] 127
雙精度浮點數 1 位[63] 11 位[62-52] 52 位[51-00] 1023

下面以單精度浮點數為例來介紹浮點數的三個區域:

符號域:符號域占1位,0表示正數,1表示負數。指數域:指數域共有8位,可表達的範圍為:0~255。為能處理負指數,實際指數位存儲在指數域中值減去一個偏移量(單精度為127,雙精度為1023)。單精度浮點數的偏移量為127,故實際可表達的指數值的範圍為-127~128。尾數域:尾數域共有23位。由於規範浮點數的小數點左側必須為1,所以在保存尾數時,可以省略小數點前面這個1,從而騰出一個二進制位來保存更多的尾數。舉例:比如對於單精度數而言,二進制的1001.101(對應於十進制的9.625)可以表達為1.001101 ×2^3,所以實際保存在尾數域中的

值為0011 0100 0000 0000 0000 000,即去掉小數點左側的1,並用0 在右側補齊。

(

整數部分(9)的計算:1001

小數部分(0.625)的計算:

0.625*2=1.25--------1

0.25 *2=0.5 ----------0

0.5 *2=1.0 -----------1

所以用二進制科學表示方式為:1.001101*2^3

)

實數與浮點數之間的變換舉例 例一:已知一個單精度浮點數用16進制數表示為:0xC0B40000,求此浮點數所表達的實數。

先轉換為二進制形式 ( 注意 : 對於負數二進制補碼轉換成十進制一定要 : 先取反 , 後加 1)

C 0 B 4 0 0 0 0

1100 0000 1011 0100 0000 0000 0000 0000

按照浮點數格式切割成相應的域 1 1000 0001 01101 000000000000000000

經分析:符號域1 意味著負數;指數域為129 意味著實際的指數為2 (減去偏差值127);尾數域為01101 意味著實際的二進制尾數為1.01101 (加上隱含的小數點前面的1)。所以,實際的實數為:

= -1.01101 × 2^ 2=- ( 1*2^0 + 1*2^(-2) + 1*2^(-3) + 1*2^(-5) ) × 2^2

= -(1+0.25+0.125+0.03125)*4

= -1.40625*4

= -5.625

例二:將實數-9.625變換為相應的浮點數格式。

1) 求出該實數對應的二進制:1001.101,用科學技術法表達為:-1.001101 ×2^3;

2) 因為負數,符號為1;

3) 指數為3,故指數域的值為3 + 127 = 130,即二進制的10000010;

4) 尾數為1.001101,省略小數點左邊的1後為001101,右側0補齊,補夠23位,

最終尾數域為:00110100000000000000000;

5) 最終結果:1 10000010 00110100000000000000000,用16進制表示:0xC11A0000。

相關詞條

熱門詞條

聯絡我們