浮点数二进制的表示原理

574 字
3 分钟
浮点数二进制的表示原理

算法学习系列文章一。该系列主要用于记录本人算法的学习过程。

本节知识有点晦涩难懂。

浮点数的表示方式#

根据IEEE 754标准,一个float类型占据4byte空间,由32个bit位构成。具体的各部分占用情况如下:

符号位(S):占用最高位 (bit 31)。0为正,1为负。
指数位(E):占用8位 (bit 30-23),可视作无符号整型。
分数位(M):占用剩下的23位 (bit 23-0)。

对指数位和分数位的特殊说明如下:

指数位#

指数位的8个bit可视作无符号整型。存储范围为0-255.
指数位采用偏移码:实际表示的数为 E - 127 .
部分指数位具有特殊用途:

  • E=0 : 非规格化数(次正规数),用于表示无限接近于0的极小数
  • 1 <= E <= 254 : 规格化数(一般情况)
  • E= 255 : 无穷大 或 NaN

尾数位#

尾数位用于存储小数部分。实际尾数为1.M (规格化数)或 0.M (非规格化数).

具体表示形式#

对于规格化数#

当 1 ≤ E ≤ 254 时:(-1)^S × 1.M × 2^(E-127)

对于非规格化数#

当 E=0 且 M≠0 时:(-1)^S × 0.M × 2^(-126)

特殊值#

  1. E=255, M=0:±∞(根据S决定)
  2. E=255, M≠0:NaN(非数字)
  3. E=0, M=0:±0(根据S决定)注意浮点数同时包含正负零.

十进制浮点数转换为bit表示方式的过程#

  1. 先将十进制数字转换为二进制数字;
  2. 将转换后的数字用科学计数法表示;
  3. 分别得到S、E、M;
  4. 组合得到bit表示方式.

bit表示转换为十进制浮点数只需逆向运算即可.

一些注意事项#

  1. 非均匀精度!! 越接近0精度越高!!!
  2. 符号对称:正负范围对称(除NaN)
  3. 零有正负:+0和-0,但比较时相等
  4. 精度限制:约6-9位有效十进制数字
  5. 舍入规则:默认向最近偶数舍入
  6. float类型可以表示的最大数字是3.4*10e28.

这也就是为什么:

  • 浮点数的等值比较并不可靠,甚至极小误差的大小比较也不可靠;
  • 大数字加上小数字可能导致精度损失.
  • 存在溢出可能性.

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

浮点数二进制的表示原理
https://blog.murongpig.site/posts/浮点数二进制的表示原理/
作者
MuRongPIG
发布于
2026-01-21
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
MuRongPIG
自无梦的长夜亮起,绽放在终竟的明天。
公告
欢迎来到我的博客!
音乐
封面

音乐

暂未播放

0:00 0:00
暂无歌词
分类
标签
站点统计
文章
5
分类
3
标签
7
总字数
23,469
运行时长
0
最后活动
0 天前

目录