IEEE 754 基礎
IEEE 754 浮點標準將數位組織為以下格式:
次正規數
工程師實現了次正規數字來解決問題。除 0.0 之外的所有數字在二進位表示中均以 1 開頭。為了避免在該前導位上浪費精度,他們創建了「前導位約定」。
這允許表示小於最小非次正規值的數字。
次正規數權衡次正規數表示以下之間的權衡精確度和表示長度。較小的數字會降低精度,但表示數值的數量會增加一倍。
可視化在幾何上,次正規擴展了指數 0 的範圍,使數字的可用空間加倍並減少該範圍內的間距。
實現次正規#include <assert.h> #include <inttypes.h> #include <math.h> #include <stdlib.h> #include <stdio.h> typedef struct {...} Float32; // Represents the 32-bit floating point float float_from_bytes(..., uint32_t fraction); // Reconstructs float from individual parts bool float32_equal(float f, uint32_t sign, uint32_t exponent, uint32_t fraction); // Compares float to individual parts int main() { assert(float32_equal(0.5f, 0, 126, 0)); assert(isnormal(0.5f)); ... // More assertions return EXIT_SUCCESS; }C float 在大多數桌上型電腦上表示 32 位元 IEEE 754 數字。一個範例C 程式示範了次正規數的屬性:
實作中的次正規數
次正規數在某些平台上的實作效率可能較低。 ARMv8 提供「Flush-to-Zero」模式,其中次正常值舍入為零以實現效能最佳化。
非正常與次正常次正常和非正常是同義詞,請參閱為相同類型的數字。
其他特殊情況以上是為什麼次正規數是精確度和表示長度之間的權衡?的詳細內容。更多資訊請關注PHP中文網其他相關文章!