Float16,也被称为FP16或半精度浮点数,是一种用于表示浮点数的数据类型,在计算机科学中广泛应用于各种领域。以下是对Float16的详细说明:

一、基本构成

Float16使用16位(即2个字节)来表示一个浮点数,这16位被分为三部分:

  1. 符号位:1位,用于表示数的正负。0代表正数,1代表负数。
  2. 指数位:5位,用于表示数的大小。其范围是00001~11110,对应的十进制数是1~30。为了得到实际的指数值,需要从这些值中减去一个偏置值15,因此实际指数的范围是-14~15。
  3. 尾数位:10位,用于表示数的精度。其范围是0~1023,这些值除以1024后得到实际的尾数值,范围是0~0.9990234375。

二、计算方式

Float16类型的数的计算公式是:

 

三、表示范围

  1. 表示范围

    • 最大值:当符号位为0,指数位为11110(即十进制中的30),尾数位为全1时,Float16的最大值为2^15×(1+1023/1024​)=65504。
    • 最小值:当符号位为1,指数位为11110(即十进制中的30),尾数位为全1时,Float16的最小值为−1×2^15×(1+1023/1024​)=−65504。

    需要注意的是,Float16表示的数的范围是非均匀的,即在不同的区间内,数的间隔是不一样的。

四、特殊值

在Float16中,有一些特殊的值需要特别注意:

  1. 无穷大(Inf):当指数位为全1,且尾数位为全0时,表示的数是正无穷大或负无穷大,具体取决于符号位的值。
  2. 非数(NaN):当指数位为全1,且尾数位不全为0时,表示的数是NaN,即非数。这通常用于表示某些未定义或无法表示的操作结果。

五、数值精度/数据间隔

float16数据的间隔并不是均匀的,它会因数的值而异。在不同的区间内,间隔可能有所不同。

Float16的精度是有限的,其尾数位只有10位,因此能够表示的数的精度也是有限的。         这意味着在表示某些小数时可能会出现舍入误差。

  1. 最高精度/数据间隔

    在float16的表示范围内,最小的间隔为2^-24。具体来说,其精度约为,指数位取1,位数位取0,就可得到。

        2、最低精度/数据间隔

        在某些区间内,间隔可能会变得更大,最大的间隔可以达到2^5。例如,指数位取30时,位数位每增加1,数据就增大2^5,数据间隔2^5。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐