考虑下列基于IEEE浮点格式的7位浮点表示。两个格式都没有符号位——它们只能表示非负的数字

《深入理解计算机系统(原书第2版)》第2章信息的表示和处理

练习题2.52 考虑下列基于IEEE浮点格式的7位浮点表示。两个格式都没有符号位——它们只能表示非负的数字。
1.格式A
有k=3个阶码位。阶码的偏置值是3。
有n=4个小数位。
2.格式B
有k=4个阶码位。阶码的偏置值是7。
有n=3个小数位。
下面给出了一些格式A表示的位模式,你的任务是将它们转换成格式B中最接近的值。如果需要,请使用舍入到偶数的舍入原则。另外,给出由格式A和格式B表示的位模式对应的数字的值。给出整数(例如17)或者小数(例如17/64)。


image.png

101 1110的转换

位101 1110对应的数字的值为15/2,这个很简单,就不赘述了。这里讲一下怎么将15/2转为格式B。

在这道习题之前,P74页已经有一个将整数值转换成浮点形式的实例了:

在图2-14中我们看到12 345具有二进制表示[11000000111001]。通过将二进制小数点左移13位,我们创建这个数的一个规格化表示,得到12345 = 1.10000001110012×2^13。为了用IEEE单精度形式来编码,我们丢弃开头的1,并且在末尾增加10个0,来构造小数字段,得到二进制表示 [10000001110010000000000]。为了构造阶码字段,我们用13加上偏置量127,得到140,其二进制表示为[10001100]。加上符号位0,我们就得到二进制的浮点表示[01000110010000001110010000000000]。

参考以上转换流程,对101 1110处理如下:

  1. 15具有二进制表示[1111]
  2. 15/2的二进制表示[111.1]
  3. 将二进制小数点左移2位,得到1.111x2^2
  4. 丢弃开头的1,构造小数字段,得到二进制表示[111]
  5. 构造阶码字段,用2加上偏置量7,得到9,其二进制表示为[1001]
  6. 最后得到格式B的浮点表示:[1001 111]

010 1001的转换

010 1001的值为25/32,同样的流程处理:

  1. 25具有二进制表示[11001]
  2. 25/32的二进制表示1.1001x2^-1
  3. 由于格式B只能表示3个小数位,舍入到偶数得到1.100x2^-1
  4. 丢弃开头的1,构造小数字段,得到二进制表示[100]
  5. 构造阶码字段,用-1加上偏置量7,得到6,其二进制表示为[0110]
  6. 最后得到格式B的浮点表示:[0110 100]

110 1111的转换

110 1111的值为31/2,流程如下:

  1. 31具有二进制表示[11111]
  2. 31/2的二进制表示1.1111x2^3
  3. 由于格式B只能表示3个小数位,1.11110做舍入到偶数为1.000x2
  4. 31/2的舍入后表示为1.000x2^4
  5. 丢弃开头的1,构造小数字段,得到二进制表示[000]
  6. 构造阶码字段,用4加上偏置量7,得到11,其二进制表示为[1011]
  7. 最后得到格式B的浮点表示:[1011 000]

000 0001的转换

000 0001的值为1/64

  1. 1/64具有二进制表示1.000x2^-6
  2. 丢弃开头的1,构造小数字段,得到二进制表示[000]
  3. 构造阶码字段,用-6加上偏置量7,得到1,其二进制表示为[0001]
  4. 最后得到格式B的浮点表示:[0001 000]

文章来源:https://www.jianshu.com/p/f83d0f5ae8b1?utm_campaign=haruki&utm_content=note&utm_medium=reader_share&utm_source=qq

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值