【发布时间】:2019-07-27 01:31:57
【问题描述】:
按照标准,如果我们要将浮点数转换为 32 位二进制,我们使用 1 位作为符号,8 位作为指数,另外 23 位作为尾数。
假设我们不想转换为 32 位,而是转换为 15、23 或任何其他数字。 是否有规则或方法可以“划分”转换良好的位数?
例如:如果我们说我们要将给定的浮点数转换为 15 位,我们需要多少位来转换指数和尾数?
【问题讨论】:
-
有几种格式,这里有例子注明en.wikipedia.org/wiki/Minifloat
-
如果您想对比率 exponent_bits / significand_bits 提出建议,我认为没有标准,甚至没有经验法则。这在很大程度上取决于您需要的精度和范围。需要极高的精度:有效数字更多位。需要一个很大的范围:指数的更多位。当然,您可以查看现有的 IEEE 或其他定义的类型并将其用作指南。但@EricPostpischil 是对的:硬件支持的类型(大多数时候 IEEE-754 单和双)通常快得多。
-
FWIW,编写自己的浮点类型版本会很有趣。但是,如果您需要性能或快速解决方案,请不要这样做,如果您想从中学习就可以这样做。或者,如果您想要一个始终在各种平台上提供一致结果的库(至少有一个 IEEE-754 float32 和 float64 类型的纯软件实现正是为此目的,IIRC)。
标签: floating-point binary converters