IEEE 754 浮点数

📅 2026/8/2 18:02:50
IEEE 754 浮点数
一、基础前置知识1.名称纠正与发音标准正确名称IEEE 754视频口误写成 IETF•发音I triple E•制定组织IEEE定义二进制浮点数算术规范•408 考纲要求仅掌握 IEEE7542014 年后不再考察其他自定义浮点数格式2009 年唯一非 754 真题仅作拓展不用重点练习2.浮点数诞生原因定点数缺陷定点数位数固定存在两大局限1.大数易溢出如千亿数值 4 字节 int 存不下无限加长位数不现实2.极小小数精度丢失严重。解决方案借鉴十进制科学计数法设计二进制浮点数牺牲部分精度换取超大表示范围。3.通用核心概念十进制→二进制通用浮点数统一形式符号×尾数×基数阶码1.符号决定数值正负2.尾数决定数值精度尾数位数越多精度越高3.基数进制固定值二进制基数 2十进制 10机器内不存储4.阶码决定小数点浮动位数控制数值表示范围5.规格化统一尾数书写标准方便存储与计算十进制规格化最高非 0 数字在小数点左侧例9.1×10−28禁止0.91×10−27、91×10−29二进制规格化小数点前必须唯一为 1例−1.1011×224 二进制浮点数基础转换普通二进制小数转规格化二进制科学计数法例−110.11(2)−1.1011×22•小数点右移 2 位阶码真值 2•名称由来小数点位置由阶码决定可以 “浮动”故称浮点数。二、IEEE754 标准两种核心格式考研重点float 单精度、double 双精度1.位分配总表(1)float (单精度)总位数:32bit符号位 S:1bit最高位阶码 E:8bit尾数 M:23bit阶码偏移量(偏置值):12728−1−1(2)double (双精度)总位数:64bit 1bit最高位 11bit 52bit 1023211−1−1符号位 S:1bit最高位阶码 E:11bit尾数 M:52bit阶码偏移量偏置值):1023211−1−1(3)关键规律偏置值通用公式阶码位数 n偏移量 2n−1−1•尾数位数决定精度double 尾数更长精度更高•阶码位数决定表示范围double 阶码位更多能表示更大 / 更小数字。2.三部分存储规则规格化浮点数阶码不全 0、不全 11符号位 S1bit规则0 正、1 负和原码符号规则一致。2尾数 M隐藏 1 机制必考规格化尾数格式1.M小数点前固定 1小数点后是 M•机器只存小数点后 M 部分省略整数位的 1不占用存储空间•float 实际尾数精度 24 位23 位存储位 隐藏 1double 实际 53 位•作用节省 1bit提升尾数精度。例二进制1.0001机器仅存储0001剩余低位补 0 凑满 23/52 位。3阶码 E移码存储必考转换阶码真值有正有负IEEE754 规定阶码用偏移移码存储1.转换步骤真值→机器阶码阶码机器值 阶码真值 偏置值结果转为对应位数无符号二进制2.逆转换机器阶码→真值阶码真值 无符号解读的机器阶码 - 偏置值3.示例float 阶码真值 2机器阶码 2127129 → 8bit 二进制10000001三、十进制真值 ↔ IEEE754 浮点数 两大必考题型题型 1十进制数 → float/double 机器二进制真题高频通用四步流程以 - 8.25 转 float 为例1.拆分正负确定符号位负数 S12.十进制整数 小数转二进制−8.25−1000.01(2)整数除 2 取余小数乘积取整法小数 ×2取整数位剩余小数循环至 03.写成规格化二进制科学计数法−1.0001×23尾数小数部分0001阶码真值 34.分别计算三部分二进制并拼接符号1阶码3127130 → 8bit 10000010尾数0001 后补 0 至 23 位 0001000…000拼接顺序符号位 阶码 尾数 完整 32 位 float 机器数题型 2浮点数机器码二进制 / 十六进制→ 十进制真值通用四步流程1.十六进制转完整二进制按 1 阶码位 尾数位拆分 S、E、M2.判断阶码状态全 0 / 全 1 / 普通规格化3.分别解析符号、阶码真值、完整尾数规格化补隐藏 14.组合公式 (−1)S×(1.M)2×2阶码真值转十进制。四、IEEE754 浮点数分类规格化、非规格化、特殊值分类判断依据阶码 E 是否全 0 / 全 11.规格化浮点数日常绝大多数数值•判定条件阶码 E ≠ 全 0且 E ≠ 全 1•尾数规则隐藏 1真值尾数 1.M•阶码规则真值 无符号 (E)- 偏置值•float 阶码机器值范围1\254 → 阶码真值范围-126 \ 127•边界值选择题考点a.最大规格化正数(2−2−23)×2127尾数全 1阶码真值 127b.最小规格化正数1.0×2−126尾数全 0阶码真值 - 1262.非规格化浮点数解决下溢填充 0 附近空隙•判定条件阶码 E 全 0尾数 M≠全 0•尾数规则隐藏 0真值尾数 0.M不再是 1.M•阶码固定规则float 阶码真值固定 -126double 固定 -1022•作用规格化最小正数2−126之下存储更接近 0 的极小值•边界值a.最大非规格化正数(1−2−23)×2−126b.最小非规格化正数2−14923 位尾数仅最后 1 位为 13.特殊值阶码 E 全 11无穷大 ±INF•条件E 全 1尾数 M 全 0•符号位区分正负S0 正无穷S1 负无穷•触发场景运算结果超出规格化最大值上溢 Overflow机器存无穷程序不崩溃置溢出标志位 OE2NaNNot a Number非数•条件E 全 1尾数 M 不全 0•含义无意义运算结果不是有效实数•触发场景0/0、负数开根号、∞−∞•区分非 0 数 ÷0 无穷不是 NaN3正负 0•条件阶码 E 全 0尾数 M 全 0•仅符号位区分S0 正 0S1 负 0逻辑上二者相等五、溢出上溢 Overflow / 下溢 Underflow1.上溢Overflow运算结果绝对值 最大规格化浮点数•正数上溢 → 存 ∞负数上溢 → 存 -∞•CPU 置溢出标志 OE程序默认不中断可手动捕获异常。2.下溢Underflow运算结果绝对值 最小规格化正数1.区间 1数值落在非规格化范围 → 用非规格化存储不触发下溢异常2.区间 2数值比最小非规格化数更小 → 直接存 0机器 0置下溢标志 UE。六、408 真题高频考点总结1.基础转换十进制↔二进制小数乘积取整法必背2.存储结构32/64 位三部分位分配、隐藏 1、阶码偏移量记忆3.移码换算阶码真值和机器值互转4.边界数值规格化 / 非规格化最大、最小正数5.特殊值区分0、无穷、NaN 的二进制特征与产生场景6.溢出区分上溢、下溢的表现与硬件处理7.特殊题型同一串机器码分别解读为 int 补码 /float 浮点数对比真值。七、易混易错点整理1.规格化尾数一定有隐藏 1仅非规格化隐藏 02.非规格化阶码不使用偏移公式固定为 - 126 (float)3.阶码全 0、尾数全 0 是 0阶码全 0 尾数非 0 是非规格化4.阶码全 1 尾数全 0 是无穷尾数非 0 是 NaN5.偏置值记忆float127、double1023公式2n−1−16.浮点数溢出不会直接崩溃程序会用特殊值标记7.0 除以非 0 数得无穷0 除以 0 得 NaN二者不要混淆。