Week6课下作业

课本练习p2.96 p2.97

浮点数
  1. float 单精度浮点数(32位)
  2. double 双精度浮点数(64位)
  • 练习对应书上内容P78--P81页

    知识点是IEEE浮点表示


  1. 符号(sign):s决定这个数是负数(s=1)还是正数(s=0),而对于数值0的符号位解释做特殊情况处理。

  2. 尾数(significand):M是一个二进制小数,它的范围是,或者是。

  3. 阶码(exponent):E的作用是对浮点数加权,这个权重是2的E次冪(可能是负数)。

对于float而言,符号位用1位表示,尾数M用8位表示,阶码E用23位表示。而对于double而言,符号位1位,尾数11位,阶码52位

文字描述可能有些不太好理解,配上书本p78页的图就可以更好地理解。

题目要求
/*
*Compute (int)f.
*If conversion causes overflow or f is NaN,return 0x80000000 
*/
int float_f2i(float _bits f);

对于浮点数f,这个函数计算(int)f.如果f是NaN,向0舍入。如果f不能用整数表示,那么函数应该返回0x80000000.
1071583-20171031204416357-1053726246.png

  1. 对于浮点数f,这个函数计算(float)f的位级表示.
/*Compute (float)i*/
float_bits float_i2f(int i);

1071583-20171031204431404-348065991.png

课上练习1

1071583-20171031204501216-688396268.png

课上练习2

1071583-20171031204514263-1299202378.png

课上练习3

1071583-20171031204531951-2111981934.png

课上练习4

1071583-20171031204606591-330774615.jpg

遇见的问题

  • 课上做实践的时候被段地址已转储。
  • 课下做实验楼的时候段错误

    解决和学习。
    首先明白段错误的定义;段错误是指访问的内存超出了系统给这个程序所设定的内存空间,例如访问了不存在的内存地址、访问了系统保护的内存地址、访问了只读的内存地址等等情况。
    根据定义回头看自己的代码。发现应该是字符串复制哪里出现了问题。
    -还有那些情况会出现段错误(核心已转储)的错误呢。在网上学习找到了相关博客,并进行学习。
  1. 访问不存在的内存地址
  2. 访问系统保护的内存地址
  3. 访问只读的内存地址
  4. 栈溢出

    段错误的调试方法
  5. 使用printf输出信息
  6. 使用gcc gdb

段错误参考资料

浮点数编码参考资料 建议和书上的P78页的图对应学习

转载于:https://www.cnblogs.com/hpl20155329/p/7751826.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值