浮點型數據

浮點型數據

浮點型數據定義

浮點型數據分為 浮點型常量和浮點型變數

浮點型常量

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

基本介紹

  • 中文名:浮點型數據
  • 外文名:Floating Point Value
  • 組成:浮點型常量和浮點型變數
  • 相關語言: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。

相關詞條

熱門詞條

聯絡我們