跳转至

BF16

说明

该数据格式为 16位半精度浮点数表示格式,遵循IEEE 754-2008标准规范。

二进制结构

BF16的二进制结构包含1bit符号位、8bit指数和7bit尾数,简写为E8M7。示意图如下:

BF16

数值范围

BF16的指数偏移为127,可以表达的数值通过公式定义如下。

1.对于规格化浮点数: $$ Value = (−1)^S x 2^{E−127} x (1 + \Sigma_{i=0}^6 m_i x 2^{-7+i}) $$

2.对于非规格化浮点数: $$ Value = (−1)^S x 2^{E−127+1} x \Sigma_{i=0}^6 m_i x 2^{-7+i} $$

其中:

  • S ∈ {0,1}。
  • E ∈ [0, 255],但全0 和全1 用于特殊值。
  • $m_i$ 是尾数的第ibit,i ∈ [0, 6]。

BF16的取值范围为:

数值 S Exponent Mantissa 表达范围
零值(Zeros) 0/1 5'h00 10'h000 $\pm$0
最小非规格数(Min Subnormal) 0/1 5'h00 10'h001 $\pm$2^{-7} x 2^{-126}
最大非规格数(Max Subnormal) 0/1 5'h00 10'h3FF $\pm$(2^{-1} + 2^{-2} + ... + 2^{-7}) x 2^{-126}
最小规格数(Min Normal) 0/1 5'h01 10'h000 $\pm$2^{-126}
最大规格数(Max Normal) 0/1 5'h1E 10'h3FF $\pm$(1 + 2^{-1} + 2^{-2} + ... + 2^{-7}) x 2^127
无穷值(Infinities) 0/1 5'h1F 10'h000 $\pm$ $\infty$
非数(NaN) 0/1 5'h1F !=0 Not a Number

注意

当数值超出范围时会发生溢出(Overflow)或下溢(Underflow)