【例题】给定一个浮点格式(IEEE 754),有k位指数和n位小数,对于下列数,写出阶码E、尾数M、小数f和值V的公式。另外,请描述其位表示。

本文详细解析了IEEE 754浮点数格式,介绍了如何计算阶码E、尾数M、小数f和值V,并给出了数0.5、最大奇数和最小正规格化数的求解过程,同时阐述了规格化浮点数的位表示和相关特性。

前言: 上次学习汇编语言(清华大学 张悠慧)是在11月26日,内容是IEEE 754(浮点数表示)。当时撇下了一道题,等度过了12月(英语六级+本科阶段的最后考试+最后的大作业)再把汇编捡起来。现在正是把这个题目捡起来的时候。

11月26日的学习笔记:点击这里进入CSDN链接

2020年4月3日得到指正,重新修改此文。

题目

给定一个浮点格式(IEEE 754),有k位指数和n位小数,对于下列数,写出阶码E、尾数M、小数f和值V的公式。另外,请描述其位表示。

  • 数5.0;
  • 能够被准确描述的最大奇数;
  • 最小的正规格化数。
解决
前置知识一:IEEE 754

IEEE 754约定,计算机中浮点数二进制表示为:

数字形式: ( − 1 ) s M 2 E (-1)^s M 2^E (1)sM2E

  • 符号:s
  • 尾数:M,是一个位于区间[1.0, 2.0)内的小数
  • 阶码:E

编码形式:

s exp frac

exp域:E(注意,E要进行变换,再存储在exp中);
frac域:M。

前置知识二:规格化浮点数(Normalized)

这里讨论到规格化浮点数(Normalized):

  • 满足条件:exp不全为0且不全为1。
  • 真实的阶码值需要减去一个偏置(biased)量:
    • E = Exp - Bias
    • Exp:exp域所表示的无符号数值
    • Bias的取值:
      • 单精度数:127(Exp:1…254,E:-126…127)
      • 双精度数:1023(Exp:1…2046,E:-1022…1023)
      • Bias = 2^{e-1} - 1,e = exp的域的位数
  • frac的第一位隐含1:M = 1.xxx…x_2
    • 因此第一位的“1”可以省去,xxx…x:bits of frac
    • Minimum when 000…0 (M = 1.0)
    • Maximum when 111…1 (M = 2.0 - \epsilon)
前置工作一:整理变量关系

B i a s = 2 e − 1 − 1 Bias = 2^{e-1} - 1 Bias=2e11

E = e x p − B i a s E = exp - Bias E=expBias

V = ( − 1 ) s M 2 E V = (-1)^s M 2^E V=(1)sM2E

则E为 d e c ( e x p ) − ( 2 e − 1 ) dec(exp) - (2^{e} - 1) dec(exp)(2e1)

E最大值为 2 e − 1 − 1 − ( 2 e − 1 − 1 ) = 2 e − 1 − 1 2^e - 1 - 1 - (2^{e-1} - 1)= 2^{e-1} - 1 2e11(2e11)=2e11。(为什么不是 2 e − 1 − ( 2 e − 1 − 1 ) 2^e - 1 - (2^{e-1} - 1) 2e1(2e11)呢?因为有规定:exp全部取1为“非规格化浮点数”,因此规格化浮点数中exp不能全部取1,顶多为(1)*(0)

E的最小值为 1 − ( 2 e − 1 − 1 ) = 2 − 2 e − 1 1-(2^{e-1}-1)=2-2^{e-1} 1(2e11)=22e1。(为什么不是 0 − ( 2 e − 1 − 1 ) 0-(2^{e-1}-1) 0(2e1

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值