浮点型存储格式

2 分钟阅读

FP32

float共32bit:1bit符号位,8bit指数位,23bit底数位。如下表示: S E8 M23 浮点与二进制转换公式如下:

$ Y = (-1)^{s} \times 2^{e} \times m,其中m = 1.M23,e = E8 - 127 $

以浮点数12.5,举例说明:

\[\begin{align} 12.5 &=> 1100.1 \\ &=> 1.1001 \times 2^{3} \\ &=> E8 = 3 + 127 = 130 = 1000 0010 \\ &\qquad M23= 1001 0000 0000 0000 000 \\ &=> 0 1000 0010 1001 0000 0000 0000 000 \end{align}\]

FP16/BF16/FP8

对应表示如下:

Format Bits Sign Exponent Fraction Max
FP32 32 1 8 23 $2^{128}$
FP16 16 1 5 10 $2^{16}$
BF16 16 1 8 7 $2^{128}$
FP8 (E5M2) 8 1 5 2 $2^{16}$
FP8 (E4M3) 8 1 4 3 $2^{8}$