浮点数在计算机中的表示

本文详细解释了浮点数在计算机中的表示,包括单精度(float)和双精度(double)的存储结构,重点介绍了符号位、阶码和尾数的处理方式,以及规格化过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

浮点数在计算机中的表示

float单精度浮点数的存储格式

符号位
8bit阶码,偏移量127
23bit尾数
  • 符号位:0正1符,注意计算机中都用补码表示

  • 阶码:记得+127偏移量 2 7 − 1 = 0 1111111 ⏟ 7 个 1 2^7-1=0 \underbrace{1111111}_{7个1} 271=071 1111111

  • 尾数:共23位,末尾补零

10进制->float步骤

  1. 规格化:将 112.5 D − > 1.1100001 × 2 6 112.5D->1.1100001 \times 2^6 112.5D>1.1100001×26,即 符号位 . 尾 数 阶码 符号位.尾数^{阶码} 符号位.阶码
  2. 求阶码:阶码 = 阶码+127偏移量, 即 6 + 127 = 10000101 B 6+127=10000101B 6+127=10000101B
  3. 补全尾数

double双精度浮点数的存储格式

符号位
11bit阶码,偏移量1023
52bit尾数
  • 符号位:0正1符,注意计算机中都用补码表示

  • 阶码:记得+1023偏移量 2 10 − 1 = 0 1111111111 ⏟ 10 个 1 2^{10}-1=0 \underbrace{1111111111}_{10个1} 2101=0101 1111111111

  • 尾数:共23位,末尾补零

例题

1) 112.5 D 112.5D 112.5D 转换为float

  • 规格化:将$112.5D->1.1100001 \times 2^6 $,即 符号位 . 尾 数 阶码 符号位.尾数^{阶码} 符号位.阶码
  • 求阶码:阶码=阶码+127偏移量 6 + 127 = 10000101 B 6+127=10000101B 6+127=10000101B
  • 补全尾数 1100001   000 ⋯ 000 ⏟ 16 个 0 1100001 \, \underbrace{000 \cdots 000}_{16个0} 1100001160 000000
  • 最终: 0 ⏞ 符号位   10000101 ⏞ 阶码   1100001   000 ⋯ 000 ⏟ 16 个 0 ⏞ 尾数 \overbrace{0}^{符号位} \, \overbrace{10000101}^{阶码} \, \overbrace{ 1100001 \, \underbrace{000 \cdots 000}_{16个0}}^{尾数} 0 符号位10000101 阶码1100001160 000000 尾数

2) 0.0101 B 0.0101B 0.0101B 转换为float

  • 最终: 0 ⏞ 符号位   01111101 ⏞ 阶码   01   000 ⋯ 000 ⏟ 21 个 0 ⏞ 尾数 \overbrace{0}^{符号位} \, \overbrace{01111101}^{阶码} \, \overbrace{ 01 \, \underbrace{000 \cdots 000}_{21个0}}^{尾数} 0 符号位01111101 阶码01210 000000 尾数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值