非規格化浮點數

非規格化浮點數(denormalized number,a.k.a. subnormal number)是指的計算機中處理的一類特殊浮點數。在規格化浮點數中,浮點數的尾數不應當包含前導0。如果全部用十進制表示,對於類似0.0123的浮點數,規格化的表示應為1.23e-2。但對於某些過小的數,如1.23e-130,允許的階數位數不能滿足階數大小的需要,這時可能就會在尾數前添加前導0,如將其表示為0.000123e-126。

相關標準,誤差和爭議,

相關標準

IEEE754-2008中,非規格化浮點數(denormal number)被稱作subnormal number。該標準支持對十進制和二進制非規格化浮點數的運算。儘管如此,不同的軟體與硬體系統對非規格化浮點數運算的支持程度與方式不同。一些硬體系統直接支持非規格化浮點數操作,而英特爾的SSE2指令集直接將非規格化浮點數四捨五入至0。其它一些環境下非規格化浮點數的操作由軟體處理。一般來說,由軟體對非規格化浮點數進行處理將帶來極大的性能損失,而由硬體處理的情況會稍好一些,但在多數現代處理器上這樣的操作仍是緩慢的。極端情況下,規格化浮點數操作可能比硬體支持的非規格化浮點數操作快100倍。

誤差和爭議

非規格化浮點數在允許浮點誤差的前提下,可以使任何浮點運算可以在任何浮點數上操作,而不產生下溢出異常,但另一方面它也可能導致更多的除以0錯誤和NaN的出現。因此,在8087及其它一些CPU上實現非規格化浮點數曾受到爭議。

相關詞條

熱門詞條

聯絡我們