gpt4 book ai didi

c - "A conforming compiler may choose not to implement non-normalized floating point numbers"的意义是什么?

转载 作者:太空宇宙 更新时间:2023-11-04 00:39:07 25 4
gpt4 key购买 nike

ISO/IEC 9899:2011 §5.2.4.2.2 ¶10 (p48) 说:

The presence or absence of subnormal numbers is characterized by the implementation- defined values of FLT_HAS_SUBNORM, DBL_HAS_SUBNORM, and LDBL_HAS_SUBNORM:

-1 indeterminable
0 absent (type does not support subnormal numbers)
1 present (type does support subnormal numbers)

什么!所以在某些平台上我不能写double d = 33.3?或者编译器会自动将其转换为 333E-1 吗? 存在或不存在非标准化 float 的实际意义是什么?

最佳答案

次正规数是 -FLT_MINFLT_MIN 之间的非零 float (对于 float 类型)和 -DBL_MINDBL_MIN(对于类型 double)。常量 FLT_MIN 通常为 1.17549435E-38F,即 small。如果您只对 float 进行一些编程,您可能永远不会遇到次正规数

FLT_HAS_SUBNORM == 0 的编译平台上,只有数字 +0。和-0。在 -FLT_MINFLT_MIN 之间。

次正规数通常在软件中处理(因为它们具有异常行为并且不会经常发生)。根本不处理它们的原因之一是避免它们发生时可能发生的减速。这在实时环境中可能很重要。

下一代英特尔台式机处理器(或者是当前一代?)将处理硬件中的次正规。

次正规数的概念与符号 33.3333E-1 无关,它们表示相同的 double 值。

可以在这些 reminiscences 中找到次正规的理由及其在 IEEE 754 中的标准化历史。由 Kahan,在“渐进下溢”下。

编辑:

我找不到英特尔在其下一代处理器中处理硬件次正规的来源,但我找到了一个 Nvidia's Fermi platform doing so already .

关于c - "A conforming compiler may choose not to implement non-normalized floating point numbers"的意义是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16279282/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com