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 还原成真实指数的常数。
相关推荐
LinXunFeng6 天前
Obsidian - 使用 Share Note 分享笔记并自部署
前端·笔记·github
闪闪发亮的小星星11 天前
高斯光以及高斯光公式解释
笔记
cqbzcsq11 天前
CellFlow虚拟细胞论文阅读
论文阅读·人工智能·笔记·学习·生物信息
阿米亚波11 天前
【Windows】QEMU 启动 openEuler aarch64/arm64 架构系统 + 离线软件源
linux·windows·经验分享·笔记·架构·arm
自传.11 天前
尚硅谷 Vibe Coding|第三章(1) Claude Code深度使用与进阶技巧 学习笔记
笔记·学习·尚硅谷·vibecoding
.千余11 天前
【C++】模板进阶全解:非类型参数|全特化|偏特化|分离编译完全指南
开发语言·c++·笔记·学习·其他
自传.11 天前
尚硅谷 Vibe Coding|第二章 AI编程工具生态 学习笔记
笔记·学习·ai编程·尚硅谷·vibe coding
秋波。未央11 天前
Java Agent 开发 · Day 1 学习笔记(含作业完整标准答案)
java·笔记·学习
中屹指纹浏览器11 天前
2026指纹浏览器字体指纹、字体渲染偏差检测与全维度虚拟字体池搭建方案
经验分享·笔记