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 还原成真实指数的常数。
相关推荐
啵啵啵鱼12 分钟前
DS-顺序表
java·数据结构·笔记·后端·链表·obsidian
xian_wwq1 小时前
【学习笔记】深度认知系列-第13讲AI Agent时代到来——从“回答问题”到“执行任务”
人工智能·笔记·学习
程序猿炎义1 小时前
【llm-algo-leetcode学习笔记】量化优化手段
笔记·学习
xian_wwq1 小时前
【学习笔记】深度认知系列- 第15讲 AI算力战争——GPU、光通信与太空数据中心
笔记·学习
雨田言炎2 小时前
2026/9/5 C复习笔记(一)
c语言·笔记
zhangrelay2 小时前
答疑-是否软件源问题都必须更换为国内呢-
linux·笔记·学习·ubuntu·ros2
zhangrelay2 小时前
《ROS 机器人程序设计》课程教学大纲-2026- kinetic-lyrical
linux·笔记·学习·ubuntu·机器人
路弥行至3 小时前
Linux (ARM64 / Jetson) 挂载 exFAT 移动硬盘排障与离线安装指南
linux·运维·服务器·经验分享·笔记·jetson·exfat
知产xiao_xin3 小时前
《伯尔尼公约》适用的特殊情形
经验分享·笔记·知识产权
自小吃多6 小时前
PCB Editor软件走线、修线操作笔记
笔记·嵌入式硬件