浮点数的表示方法(IEEE 754标准)

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

浮点数的表明方法(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
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
晓的头像 - 鹿快
评论 抢沙发

请登录后发表评论

    暂无评论内容