浮點數依據 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中文網其他相關文章!