浮點表示法

浮點表示法

浮點表示法是已知的C/C++編譯器都是按照IEEE(國際電子電器工程師協會)制定的IEEE浮點數表示法來進行運算的。這種結構是一種科學表示法,用符號(+或-)、指數和尾數來表示,底數被確定為2。所以在IEEE浮點數表示法裡,一個浮點數為尾數乘以2的指數次方再加上符號。

基本介紹

  • 中文名:浮點表示法
  • 外文名:Floating point representation
  • 套用領域:計算機領域
簡介,移碼,格式,計算機中浮點數的表示,

簡介

float規格float總計32位,4位元組由最高到最低位分別是第31、30、29、……、0位,則:31位是符號位,1表示該數為負,0表示為正。30-23位,一共8位是指數位。22-0位,一共23位是尾數位。3、轉換例子按照IEEE浮點數表示法,將float型浮點數123456.0f轉換為二進制(註:這裡的f表示浮點數,為十進制數,不是表示16十六進制)。處理不帶小數的浮點數時,直接將整數部轉化為二進制表示:11110001001000000也可以這樣表示:11110001001000000.0然後將小數點向左移,一直移到離最高位只有1位:1.11100010010000000共左移了16位,所以原數就等於:1.11100010010000000*(2^16)。 可知尾數為1。

移碼

移碼是一種專門用於浮點數階碼錶示的碼制採用這種表示方法可以更方便地比較兩數階碼的大小
其定義式為([x]為x的移碼):
[x]=2^m+x
浮點數格式:先將數寫成一種指數形式,
N=±R^E*M
其中N為真值,R^E為比例因子,M是尾數。

格式

(EfE1E2E3E4E5E6E7MfM1M2M3M4M5M6M7)
其中Ef到E7這部分叫做階碼,用移碼錶示,Ef是階符,
Mf到M7稱作尾數,用補碼錶示,Mf為數符,
小數點的位置在Mf後面
對於浮點數的表示,字長是由硬體決定,如字長可以是32位,其中階碼8位,含一位階符,則階碼的表示範圍為-128到127,尾數為23位
例如,原數為-1101.110101000100...0如果用上述32位表示
則-1101.110101000100...0=-0.1101110101000100...0*2^4
4=0000100,其移碼=2^7+0000100=10000100
Mf為1,M1後為1101110101000100...,不足23位後的空位置用0補夠
則其浮點數表示為10000100,1.1101110101000100...0

計算機中浮點數的表示

我們知道需要把十進制數轉換為二進制數進行存儲表示,整數轉換為二進制很簡單,也不會有什麼誤差。那么當我們要表示的是浮點數又是什麼樣的呢? 在浮點數中,只有少量的數可以用這種方法精確的表示出來,而絕大多數是無法精確表示的。舉一個簡單的例子:
3.14159 我們直接對它進行轉換,則為11.0010010000111111001⋯
用這種方法我們無法把3.14159 精確表示我們可以用這兩種方法來表示浮點數:
1 .BCD 代碼
2 . 階碼尾數表示法
3 . 我們可以把第二種方法改造一下,就能得到一種更好的方法先把一個浮點數的小數點移到最後,用N=M×RC 表示,R=10,然後再把M 轉換為二進制B,再用C 做階碼,B 做尾數用階碼尾數法表示。
例如: 3.14159=314159×10- 5
314159 用二進制表示為1001100101100101111
用這種方法不僅可以精確表示浮點數的值,還可以充分的利用存儲空間。
幾種方法的比較:
1. 直接將浮點數轉換為二進制方法無法精確表示。
2.BCD 碼錶示方便易懂,但不能充分利用空間。
3. 方法3 既可以精確表示浮點數,又能很好的利用空間。

相關詞條

熱門詞條

聯絡我們