IEEE 754
維基百科,自由的 encyclopedia
IEEE二進位浮點數算術標準(IEEE 754)是20世紀80年代以來最廣泛使用的浮點數運算標準,為許多CPU與浮點運算器所採用。這個標準定義了表示浮點數的格式(包括負零-0)與反常值(denormal number),一些特殊數值((無窮(Inf)與非數值(NaN)),以及這些數值的「浮點數運算子」;它也指明了四種數值修約規則和五種例外狀況(包括例外發生的時機與處理方式)。
IEEE 754規定了四種表示浮點數值的方式:單精確度(32位元)、雙精確度(64位元)、延伸單精確度(43位元以上,很少使用)與延伸雙精確度(79位元以上,通常以80位元實做)。只有32位元模式有強制要求,其他都是選擇性的。大部分程式語言都提供了IEEE浮點數格式與算術,但有些將其列為非必需的。例如,IEEE 754問世之前就有的C語言,現在包括了IEEE算術,但不算作強制要求(C語言的float通常是指IEEE單精確度,而double是指雙精確度)。
該標準的全稱為IEEE二進位浮點數算術標準(ANSI/IEEE Std 754-1985),又稱IEC 60559:1989,微處理器系統的二進位浮點數算術(本來的編號是IEC 559:1989)[1]。後來還有「與基數無關的浮點數」的「IEEE 854-1987標準」,有規定基數為2跟10的狀況。現在最新標準是「ISO/IEC/IEEE FDIS 60559:2020」。
在六、七十年代,各家電腦公司的各個型號的電腦,有着千差萬別的浮點數表示,卻沒有一個業界通用的標準。這給數據交換、電腦協同工作造成了極大不便。IEEE的浮點數專業小組於七十年代末期開始醞釀浮點數的標準。在1980年,英特爾公司就推出了單片的8087浮點數協處理器,其浮點數表示法及定義的運算具有足夠的合理性、先進性,被IEEE採用作為浮點數的標準,於1985年發佈。而在此前,這一標準的內容已在八十年代初期被各電腦公司廣泛採用,成了事實上的業界工業標準。加州大學伯克利分校的數值計算與電腦科學教授威廉·卡韓被譽為「浮點數之父」。