浮點計算

名詞簡介

浮點計算是指浮點數參與的運算,這種運算通常伴隨著因為無法精確表示而進行的近似或捨入。

具體闡述

點運算
當我們用不同的電腦計算圓周率時,會發現一台電腦的計算較另一台來講結果更加精確。徐如倜或者我們在進行槍戰遊戲的時候,當一粒子彈擊中牆壁時,牆上剝落下一塊牆皮,同樣的場面在一台電腦上的表現可能會非常的呆板、做作;而在另外一台電腦上就會非常生動形象,甚至與我們在現實中看到的所差無幾。這都是浮點運算能力的差異導致的。
浮點運算就是實數運算,因為計算機只能存儲整數,所以實數都是約數,這樣浮點運算是很慢的而且會有誤差。現在大多數機器都是32位的,也就是說32為都用來表示整數的話,那么對於無符號整數就是0到2^32-1,對於有符號的話就是-2^31到2^31-1。如果是實數的話,就不是這樣了,機器有兩種辦法表示實數,一種是定點,就是小數點位置是固定的,一種是浮點,就是小數點位置不固定,計算方法也比較麻煩,通常會比整數運算代價大很多
FPU->FloatingPointUnit,浮點運算部件
BCD->BinaryCodedDecimal壓縮的二十進制數,是用4個位來表示數字0~9,一個byte表示兩個十進制數,比如01111001表示89
浮點運算使用三種不同的數據:
1)整數(Integer),又分為字,短整數(ShortInteger)和長整數(LongInteger)
2)實數(Real)分單精度(SingleReal)和雙精度(DoubleReal)
3)壓縮的二十進制數(BCD)
下面是其位數(bits)和能表示的大致範圍和
TypeLengthRange
-----------------------------------------------
WordInteger16bit-32768to32768
ShortInteger32bit-2.14e9to2.14e9
LongInteger64bit-9.22e18to9.22e18
SingleReal32bit1.18e-38to3.40e38
DoubleReal64bit2.23e-308to1.79e308
extendedReal80bit3.37e-1932to1.18e4932
PackedBCD80bit-1e18to1e18
雙精度數和擴展精度數表示範圍對一般套用來說已經足夠大了!
1)整數,以補碼形式存儲,正數的補碼是其本身,負數補碼是其絕對值的各位變反後加1,下面是實際存儲的例子:
0024var1dw24
FFFEvar2dw-2
000004D2var3dd1234
FFFFFF85var4dd-123
0000000000002694var5dq9876
2)BCD數
在FPU中用80位表示正好是浮點堆暫存器的寬度,在其格式如下存儲:
Bit
79___72_71________________________________________0
符號---18個二十進制數--------
看下面的例子:
00000000000000012345var1dt12345
80000000000000000100var2dt-100
3)浮點數,這個複雜點,有三種格式
單精度:_31_30________23_22___________0
符號指數有效數
雙精度:_63_62__________52_51__________________0
符號指數有效數
擴展精度數:
_79_78____________64_63___________________0
符號指數有效數
例子:
C377999Avar1dd-247.6
40000000var2dd2.0
486F4200var3real42.45e+5
4059100000000000var4dq100.25
3F543BF727136A40var5real80.00123
C377999Avar1dd-247.6
40000000var2dd2.0
486F4200var3real42.45e+5
4059100000000000var4dq100.25
3F543BF727136A40var5real80.001235
400487F34D6A161E4F76var6real10
另外,浮點運算的常見形式是開方運算。

相關詞條

相關搜尋

熱門詞條

聯絡我們