大于 1 的最小去/归一化数是多少?(64 位)

问题描述 投票:0回答:2

我正在与非规范化数字作斗争。

我知道:

本质上,非规范化浮点数能够表示 可以用以下表示的最小(大小)数字 任何浮点值。

我也知道数字可以这样表示:

enter image description here

但是我陷入困境的是去/标准化数字的实际计算?

有没有办法做到这一点?有什么特殊的数字吗?

非常感谢您的回答!

floating-point binary floating-accuracy ieee-754 denormalization
2个回答
7
投票

“次正常”是 IEEE 754 标准中使用的术语。

不存在大于 1 的次正规数;次正规数很小(比正规数更小)。

最小正常指数为-1022(编码为位00000000001,因为指数编码有1023的偏差)。次正规数有较低的指数编码,编码为全零位00000000000。(虽然编码为0,但其表示的指数与编码1相同,-1 1022。指数编码0表示有效数的前导位为0而不是 1。)

次正规数的值是尾数(小数部分)乘以 2-1022,并应用符号位(0 表示正数,1 表示负数)。尾数由前导 0 组成,然后是小数点“.”,然后是尾数字段的位。因此,如果有效数字字段包含 0101010101010101010101010101010101010101010101010101,则有效数字值为(二进制) 0.01010101010101010101010101010101010101010101010101012.

如果有效数字段完全为零,则该值为零,并且该数字通常不被认为是次正规的。最小的正次正规数的最低位为 1,所有其他位均为 0。其值为 0.00000000000000000000000000000000000000000000000000012•2-1022,即 2-52•2-1022 = 2-1074.


0
投票

这是我几年前写的一些 Perl 代码。不幸的是,我不再记得这些确切数字的来源:

我们的$POS_NORM_SMALLEST = 2.22507385850720138e-308; # 可能的最小标准化正 IEEE 64 位浮点值

我们的$POS_DENORM_SMALLEST = 4.94065645841247e-324; # 最小可能的非规范化(次正规)正 IEEE 64 位浮点值

© www.soinside.com 2019 - 2024. All rights reserved.