【发布时间】:2013-12-02 03:19:23
【问题描述】:
我正在与非规范化数字作斗争。
我知道:
本质上,非规范化的浮点数能够表示 可以表示的最小(数量级)数字 任何浮点值。
我也知道数字可以这样表示:
但是我卡住的地方是去/归一化数字的实际计算?
有没有办法做到这一点?有什么特殊的数字吗?
不胜感激!
【问题讨论】:
标签: floating-point binary floating-accuracy ieee-754 denormalization
我正在与非规范化数字作斗争。
我知道:
本质上,非规范化的浮点数能够表示 可以表示的最小(数量级)数字 任何浮点值。
我也知道数字可以这样表示:
但是我卡住的地方是去/归一化数字的实际计算?
有没有办法做到这一点?有什么特殊的数字吗?
不胜感激!
【问题讨论】:
标签: floating-point binary floating-accuracy ieee-754 denormalization
“次正常”是 IEEE 754 标准中使用的术语。
没有大于 1 的次正规数;次正规数很小(比正规数更小)。
最小正态指数为 -1022(编码为位 00000000001,因为指数编码有 1023 的偏差)。次正规数具有较低的指数编码,编码为全零位 00000000000。
次正规数的值是有效数(小数部分)乘以 2-1022,应用符号位(0 表示正数,1 表示负数)。有效数字由前导 0 构成,然后是小数点“.”,然后是有效数字字段的位。因此,如果有效数字字段包含 0101010101010101010101010101010101010101010101010101,则有效数字值为(二进制)0.01010101010101010101010101010101010101010101010101010101010101010101010>2>
如果有效位字段完全为零,则该值为零,并且该数字通常不被认为是次正规的。最小的正次正规数的最低位为 1,所有其他位为 0。其值为0.00000000000000000000000000000000000000000000000000012•2-1022,即2-52•2-1022 = 2-1074.
【讨论】:
1 在符号位中表示负数,因为它是这样定义的 - 认为它表示存在“-”符号......可能与不使用符号表示正数的“正常”做法 - 我们通常不写“+42”,但符号通常用于负数。不过,我认为没有任何重要的技术原因可以这样定义它……