可以用 IEEE 754-2008 64 位二进制(基数 2)格式表示的最大和最小十六进制浮点文字值是多少?

What is the largest and smallest Hex Floating Point Literal value that can be represented in IEEE 754-2008 64-bit binary (radix 2) format?

我知道在 IEEE 754-2008 64 位二进制(基数 2)格式中,可以表示的最大 十进制浮点数1.7976931348623157E +308,最小的是4.94065645841246544E-325。因此,将其转换为十六进制的结果不是最大和最小的 Hex Floating Point value?

最大的有限值的指数为 11111111110(因为最大的一个是为 INF 和 NaN 保留的)这意味着 ,表示 22046 - 1023 = 2 +1023 和所有 1 的有效数:

0 11111111110 11111111111111111111111111111111111111111111111111112

这是原始十六进制形式的 0x7FEFFFFFFFFFFFFFF 和 0x1.fffffffffffffp+1023。您可以使用 float.exposed or floating-point-converter

进行检查

也可以这样计算:binary64的有效位显式52位,隐藏1位,所以最大的有效位是1.fffffffffffff。有 11 个指数位,允许的最大指数为 211 - 1 - 1023 - 1 = 1023。这意味着最大值是 0x1.fffffffffffffp+1023

同样,最小的非零归一化数的指数模式为00000000001,表示21 - 1023 = 2-1022 和有效数 = 0,所以

0 00000000001 00000000000000000000000000000000000000000000000000002
= 0x0000000000000001
= 0x1p-1022

最小的非零次正规数的指数全为零且有效数 = 1:

0 00000000000 00000000000000000000000000000000000000000000000000012
= 0x0010000000000000
= 0x1p-1074