IEEE 754 基础知识
IEEE 754 浮点标准将数字组织为以下格式:
次正规数
工程师实现了次正规数来解决问题。除 0.0 之外的所有数字在二进制表示中均以 1 开头。为了避免在该前导位上浪费精度,他们创建了“前导位约定”。
但是,这将使最小的非零数字比以前的标准更大。工程师引入了次正规数作为例外,其中:
这允许表示小于最小非次正规数的数字value.
次正规数权衡
次正规数表示精度和表示长度之间的权衡。较小的数字会降低精度,但表示值的数量会增加一倍。
可视化
在几何上,次正规扩展了指数 0 的范围,使数字的可用空间加倍并在该范围内减小间距。
实施次正规
C 浮点表示大多数台式机上的 32 位 IEEE 754 数字。一个示例 C 程序演示了次正规数的属性:
#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; }
实现中的次正规数
次正规数在某些平台上的实现效率可能较低。 ARMv8 提供“Flush-to-Zero”模式,其中次正常值舍入为零以实现性能优化。
非正常与次正常
次正常和非正常是同义词,请参阅为同类型号码。
其他特殊案例
以上是为什么次正规数是精度和表示长度之间的权衡?的详细内容。更多信息请关注PHP中文网其他相关文章!