浮点数在计算机中采用IEEE 754标准来表明,是一种科学计数法的二进制版本。

IEEE 754标准的基本结构
浮点数由三个部分组成:符号位(S)、指数位(E) 和尾数位(M)。
单精度浮点数(32位)
S EEEEEEEE MMMMMMMMMMMMMMMMMMMMMMM
↑ ↑ ↑
1位 8位 23位
双精度浮点数(64位)
S EEEEEEEEEEE MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
↑ ↑ ↑
1位 11位 52位
各组成部分的含义
符号位 (Sign)
- 1位:0表明正数,1表明负数
指数位 (Exponent)
- 采用偏移码表明(非补码)
- 单精度:8位,偏移量 = 127
- 双精度:11位,偏移量 = 1023
- 实际指数 = 存储的指数值 – 偏移量
尾数位 (Mantissa/Fraction)
- 表明小数部分,采用隐含前导1的表明法
- 实际值 = 1.M(二进制)
完整的计算公式
一个浮点数的实际值计算公式为:
值 = (-1)^S × 1.M × 2^(E - 偏移量)
具体示例
示例1:单精度浮点数 0.15625 的表明
步骤1:转换为二进制
0.15625₁₀ = 0.00101₂
= 1.01 × 2^(-3) // 规范化表明
步骤2:确定各部分值
- 符号位 S = 0(正数)
- 指数 E = -3 + 127 = 124₁₀ = 01111100₂
- 尾数 M = 01000000000000000000000₂(去掉前导1后的小数部分)
步骤3:组合成32位
0 01111100 01000000000000000000000
示例2:单精度浮点数 -12.5 的表明
步骤1:转换为二进制
12.5₁₀ = 1100.1₂
= 1.1001 × 2^3 // 规范化表明
步骤2:确定各部分值
- 符号位 S = 1(负数)
- 指数 E = 3 + 127 = 130₁₀ = 10000010₂
- 尾数 M = 10010000000000000000000₂
步骤3:组合成32位
1 10000010 10010000000000000000000
精度问题
- 0.1在二进制中是无限循环小数(0.0001100110011…)
- 浮点数只有有限的尾数位来存储,必须进行舍入,导致精度损失
十进制小数如何转为二进制?下篇再续!
© 版权声明
文章版权归作者所有,未经允许请勿转载。如内容涉嫌侵权,请在本页底部进入<联系我们>进行举报投诉!
THE END





![[C++探索之旅] 第一部分第十一课:小练习,猜单词 - 鹿快](https://img.lukuai.com/blogimg/20251015/da217e2245754101b3d2ef80869e9de2.jpg)










暂无评论内容