HiF8¶
该数据格式为 8位低精度浮点数表示格式。
二进制结构¶
HiF8在IEEE 754的基础上,定义了一个额外的点域(D),占2~4bits。D值显式指示指数域所占的位数,并暗示尾数宽度。不同的点域,HiF8格式有不同的编码,如下图所示。

符号、指数和尾数分别缩写为“S”、“E”和“M”。
数值范围¶
HiF8可以表达规格化浮点数(normal)和非规格化浮点数(subnormal)两种数据。
1.对于规格化浮点数: $$ Value = Sv x 2^(Ev) x (1 + Mv) $$
其中:
- Sv是编码在S的符号位,编码为0时表示正数,编码为1时表示负数。
- Ev是编码在E字段的实际指数值。E字段的最高有效位是符号位,并且{1b1:E[MSB-1, LSB]}是Ev的绝对值。
- Mv是编码在M字段的实际尾数值,它被计算为$Mv = \frac{M}{M^w}$。(w是M字段的位宽)
2.对于非规格化浮点数: $$ Value = Sv x 2^(Mv-23) $$
- Sv是编码在S的符号位。
- Ev未定义。
- Mv是指数位,范围从0至7。(为0时表示Zero或者NaN)。
HiF8编码细节如下:
| S | D | E | M | Sv | Ev | Mv |
|---|---|---|---|---|---|---|
| 0~1 | 0000 | - | 000~111 | $\pm$1 | - | [0, 7] |
| 0~1 | 0001 | - | 000~111 | $\pm$1 | 0 | [$\frac{0}{8}$, $\frac{7}{8}$] |
| 0~1 | 001 | 0~1 | 000~111 | $\pm$1 | $\pm$1 | [$\frac{0}{8}$, $\frac{7}{8}$] |
| 0~1 | 01 | 00~11 | 000~111 | $\pm$1 | $\pm$[2, 3] | [$\frac{0}{8}$, $\frac{7}{8}$] |
| 0~1 | 10 | 000~111 | 00~11 | $\pm$1 | $\pm$[4, 7] | [$\frac{0}{4}$, $\frac{3}{4}$] |
| 0~1 | 11 | 0000~1111 | 0~1 | $\pm$1 | $\pm$[8, 15] | [$\frac{0}{2}$, $\frac{1}{2}$] |
一些特殊值列举如下:
| S | D | E | M | Value |
|---|---|---|---|---|
| 0 | 0000 | - | 000 | Zero |
| 1 | 0000 | - | 000 | NaN |
| 0 | 11 | 0111 | 1 | +INF(正无穷) |
| 1 | 11 | 0111 | 1 | -INF(负无穷) |