float浮点数计算-原理笔记

文章目录

浮点数计算不太好理解。

浮点数的结构

浮点数的结构分为3部分:

符号位 # 符号位可不是小数点位,别弄混了

指数位

尾数位

类型 符号位 指数位 尾数位
16位浮点数 1位 5位 10位
32位浮点数 1位 8位 23位
十进制 二进制 符号位 指数位 尾数位
0.625 0.5+0.125=2-1+2-3=1.01x2-1 0 -1 1.01
2的次方对照表

这里只展示25到2-10次方:

二进制 25 24 23 22 21 20 2-1 2-2 2-3 2-4 2-5 2-6 2-7 2-8 2-9 2-10
十进制 32 16 8 4 2 1 0.5 0.25 0.125 0.0625 0.03125 0.015625 0.0078125 0.00390625 0.001953125 0.0009765625
偏移量

负数在计算时太麻烦,所以存的时候加个偏移量,都存为正数,解的时候再减掉。

fp16 偏移量为15

fp32 偏移量为127

为什么是这个值呢?

以fp32为例,8位指数位的范围是-126到127,0和128被保留了,表示0和无穷大。

所以即使是最小值-126,加上127也是正数,符合设计理念。

同理fp16,5位指数位的范围-14到15,0和16被保留了。

最小值-14,加上15也是正数,也符合设计理念。

所以存储值的指数位的值是 (-14+15,15+15)= (1,30)

当反算值的时候,减去15,30-15=15,最大值的情况是215

浮点数计算公式

这块不太好理解,有时间再看看。

IEEE 754 标准下,浮点数的通用计算公式其实就是一个"二进制版的科学计数法"。

对于最常见的 规格化数,公式如下:

符号说明:

符号 含义 说明
S 符号位 0 代表正数,1 代表负数。
M 尾数 存储的是小数部分。注意公式里是 1.M ,这意味着二进制小数点前默认隐藏了一个 1(这叫隐含位)。
E 指数存储值 指数位里实际存的二进制数(无符号整数)。
\text{Bias} 偏移量 用来把存储的指数 E 还原成真实指数的常数。
相关推荐
Skylwn7 分钟前
保姆级教程之将 GitHub Models 接入 NewAPI
笔记·github
脆皮炸鸡75529 分钟前
库制作与原理~动态链接
linux·开发语言·经验分享·笔记·学习方法
nnsix43 分钟前
设计模式 - 工厂模式 笔记
笔记·设计模式
一只机电自动化菜鸟3 小时前
一建机电备考笔记(36) 焊接技术—焊接方法与工艺(含考频+题型)
笔记·学习·职场和发展·生活·学习方法
小袁说公考4 小时前
公考培训机构2025年度测评:财务健康度与用户体验重构排名格局
大数据·人工智能·经验分享·笔记·其他·重构·ux
许长安4 小时前
gRPC Keepalive 机制
c++·经验分享·笔记·rpc
RainCity4 小时前
Java Swing 自定义组件库分享(五)
java·笔记·后端
脆皮炸鸡7555 小时前
库制作与原理~静态库&静态链接
linux·经验分享·笔记·学习方法
书生的梦5 小时前
《神经网络与深度学习》学习笔记(一)
笔记·深度学习·神经网络
袁小皮皮不皮5 小时前
HCIP-BFD 学习笔记
运维·服务器·网络·笔记·网络协议·学习·智能路由器