为什么0 11110 1111111111
而不是0 11111 1111111111
是最高半精度数?
答案 0 :(得分:7)
因为指数字段11111 2 是为无穷大和NaN保留的。 IEEE 754-2008标准的第3.4节说:
编码的偏差指数E的范围应包括:
- 1到2之间的每个整数 w - 2,包括在内,以编码正常数字
- 保留值0以编码±0和次正规数
- 保留值2 w - 1编码±∞和NaNs。
这里“w”是指数字段的宽度。这不仅适用于半精度格式,也适用于所有IEEE 754二进制交换格式(包括通常的单精度和双精度格式)。
在binary16格式的特定情况下,w为5,符号位后面的前5位描述偏置指数E,范围从00000 2 到11111 2 < /子>。此范围中的最高值11111 2 用于无穷大和NaN值,而底部值00000 2 用于零和子正态。剩余的偏差指数值用于表示有限正常数。因此,有限数可用的顶部偏差指数值为2 w - 2 = 11110 2 而不是11111 2
对于此格式,指数偏差为15,因此位模式0 11110 1111111111给出无偏指数30 - 15 = 15,并表示值1.1111111111 2 ×2 15 ,或65504。
再举一个例子,最大的binary32(单精度)浮点数由位模式
表示0 11111110 11111111111111111111111 2