首頁 > 後端開發 > C++ > 主體

為什麼我們有次正規浮點數?

DDD
發布: 2024-11-11 07:42:03
原創
303 人瀏覽過

Why Do We Have Subnormal Floating Point Numbers?

次正規浮點數

浮點數依據 IEEE 754 標準進行組織。在單精確度中,格式由 1 位符號、8 位指數和 23 位分數組成。指數有 -127 的偏差,因此 0 代表 2^-126,1 代表 2^-125。

「前導位約定」假設除 0.0 之外的每個數字在二進位中都以 1 開頭。這避免了浪費前導數字的精度位。然而,它為 0.0 創建了一個例外,它的指數位和分數位都等於 0。

因此,可以表示的最小非零數是 1.0 × 2^-126。為了表示較小的數字,工程師引入了次正規數,其前導位為 0,固定指數為 -126。

最大的次正規數為 0.FFFFFE × 2^-126,非常接近最小的非次正規數。最小的非零次正規數是 0.000002 × 2^-126,甚至更接近 0.0。

次正規數是精確度和表示長度之間的權衡。例如,最小的非零次正規數的精確度僅為 1 位,因此將其除以 2 會精確地得到 0.0。

在視覺化中,次正規數將指數 0 範圍的長度加倍,並將指數 0 範圍的長度減半與沒有次正規的系統相比,該範圍內的點數。這導致可表示的數位空間中存在一些間隙。

在 C 中,浮點數資料型態表示單精確度 IEEE 754 浮點數。次正規數可以使用 isnormal() 函數來識別,該函數對於次正規數傳回 false,對於正規數傳回 true。

以上是為什麼我們有次正規浮點數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板