除指数和尾数的位数

Divide number of bits exponent and mantissa

按照标准,如果我们想将一个浮点数转换为 32 位的二进制,我们使用 1 位作为符号,8 位作为指数,另外 23 位作为尾数。

假设我们不想转换为 32 位,而是 15、23 或任何其他数字。 是否有规则或方法来“划分”给定的转换良好的位数?

例如:如果我们说我们要将给定的浮点数转换为 15 位,我们需要多少位到指数和尾数?

按照标准,有 "Half precision" 个浮点数,大小为 16 位。

标准是 IEEE 754:

它定义了各种不同的格式,但没有定义 15、23 等等。

如果您要定义自己的格式,本质上这是一个设计决策,用于指数的位数。

该标准定义了一种 16 位格式(半精度),其中 10 位用于尾数(有效的 3 位小数)和 5 位用于允许范围为 +-65500 的指数。

这是一个示例 16 位格式,它使用不同的位数作为尾数。它实际上只有 2 位小数精度,但基本上涵盖与单精度相同的值范围。这使得它可用于不同目的的半精度:

这里还有一个 16 位格式和 8 位格式的例子:

下面是一个没有符号位的 11 位和 10 位浮点数的示例。这些仅用于存储图像,因此不需要负值。他们使用 5 位作为尾数,以便于与半精度相互转换,这是显卡内部使用的精度: