算术下溢
算术下溢也稱為浮点数下溢,是指计算机浮点数计算的结果小于可以表示的最小数。 算术下溢出現在計算結果很接近零,使得計算結果的大小小於浮点数可以表示的最小數字。算术下溢也可以視為是浮点数指數在負值時的溢位。例如,浮点数指數范围为-128至127,一个绝对值小于2−127的浮点数就会造成下溢(假设-128的阶码用于表示负无穷)。 下溢間距界於−fminN and fminN之間的區間稱為下溢間距(underflow gap),其中fminN為一般浮點數格式所能表示的最小正數。 在早期的設計中,界於下溢間距之間的數字其值均視為零,因此若出現算术下溢,其結果會被改為零,可能是用硬體或系統軟體處理,此處理方式稱為「清洗为0」(flush to zero)。 1984年版的IEEE 754導入了次正规数,次正规数和零可以填滿下溢間距。假設浮点数指數范围为-128至127,最小可表示正规数為2−127,次正规数則是類似0.9 −127、0.8 −127……之類的數,計算時會將結果轉換為最接近的次正规数,因此可以漸近下溢,不過最接近的次正规数中仍有可能是零。 處理算术下溢出現算术下溢時,可能會設定一個狀態位元、產生異常、產生中斷或是這幾項的組合。 IEEE 754中規定只有算术下溢會造成精確度下降時才回報算术下溢,一般是在最後的計算結果不對時才會出現。但若程式要捕捉算术下溢,不論是否有精確度,都會回報算术下溢。IEEE 754處理算术下溢及其他異常的方式相同,都要紀錄算术下溢時的浮點運算器狀態。 相關條目
|