IEEE754浮点数简介

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

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浮点数的一般格式。按照一般格式,阶码长度k和尾数长度n共同决定一种IEEE754浮点数。IEEE754定义了3种浮点数类型,分别是单精度浮点数、双精度浮点数、扩展双精度浮点数。

Table 3: IEEE754定义的浮点数
单精度浮点数双精度浮点数扩展双精度浮点数
指数位数811至少15
尾数位数2352至少64
总位数3264至少79(通常80)

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

Table 4: 新浮点数类型
类型半精度浮点数FP16FP8(E5M2)FP8(E4M3)
指数位数554
尾数位数1023
总位数1688

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值