IEEE754浮点数简介

IEEE754协议使用一个固定长度的数据结构来表示实数的近似值。数据结构有三部分:1位符号s、k位阶码编码 e=ek−1ek−2...e0和n位尾数编码 f=fn−1fn−2...f0。

IEEE754浮点数简介_第1张图片

s、e和f三部分依次表示符号S、阶码E和尾数M,对应的实数值是 V=S∗M∗2^E。 符号的编码比较简单,即 S=(−1)^s 。阶码E和尾数M的编码稍微复杂一些。如果e不等于0且不等于 2^k−1 ,此时E = e-Bias,M = 1+0.fn−1...f0 。其中Bias= 2^k−1−1 叫做偏置量。注意这里的小数 1+0.fn−1...f0 是一个二进制小数。这样的浮点数叫做规格化浮点数。规格化浮点数用于表示距离0比较远的,比较大的实数。如果e等于0,此时E = 1-Bias,M= fn−1...f0 。这样的浮点数叫做非规格化的,用于表示接近于0的小数。当e= 2k−1 且f等于0时浮点数表示无穷大,当e = 2^k−1且f不等于0时,浮点数表示非数值。

IEEE754浮点数简介_第2张图片

上面介绍的是IEEE754浮点数的一般格式。按照一般格式,阶码长度k和尾数长度n共同决定一种IEEE754浮点数。IEEE754定义了3种浮点数类型,分别是单精度浮点数、双精度浮点数、扩展双精度浮点数。

Table 3: IEEE754定义的浮点数
单精度浮点数 双精度浮点数 扩展双精度浮点数
指数位数 8 11 至少15
尾数位数 23 52 至少64
总位数 32 64 至少79(通常80)

随着神经网络的发展,为了加速浮点数运算,又出现了半精度浮点数(FP16)和FP8。

Table 4: 新浮点数类型
类型 半精度浮点数FP16 FP8(E5M2) FP8(E4M3)
指数位数 5 5 4
尾数位数 10 2 3
总位数 16 8 8

你可能感兴趣的:(浮点数,IEEE754)