CSAPP-lecture3 and lecture4

这是我开始学习CSAPP的笔记的第3篇,在接下来的内容,我会分享自己在学习CSAPP时的笔记,感受等等,学习资料来自b站

声明:所有内容基于自己的理解,如有错误感谢大家指出。

链接:【精校中英字幕】2015 CMU 15-213 CSAPP 深入理解计算机系统 课程视频_哔哩哔哩_bilibili

一.计算机中整数的运算

首先是对于无论是补码还是无符号数的运算,均只取所能表示的位数。、

一个数乘以2的幂,其实就是把这个数的二进制进行左移对应的位数。

证明:

               

二.浮点数

1.浮点数的表示

采用IEEE发布的标准。

IEEE规定采用如下形式表示一个浮点数

 其中s,代表符号位,M为尾数,E为阶码。

浮点数有单精度与双精度2种。

对于规格化的数

        首先规格化的数值exp不全为0也不全为1

         其中 E = exp - biased,biased表示偏置值,计算方式是2^(n-1)-1,之所以要采用偏置值而不直接使用exp表示E是因为exp是一个无符号数,但我们希望阶数可以是正的也可以是负的,并且他们的取值范围相等,而减去偏置值可以达到这样一个效果。

M=1+frac

对于非格式化的值

        为什么需要非格式化的值?对于格式化的值,我们会把他化成1.xxxxxxx的形式,可以看到,格式化的值仅能表示大于1的小数,因此需要引入非格式化的值去表示0~1之间的小数。

        非格式化的值值exp全为0。

        E = 1 -biased。为什么这里不用-biased呢,因为使用1-biased可以实现非格式化的值到格式化的值的平滑过渡,不得不佩服设计者考虑到如此。

        而 M = frac。

特殊值

       正无穷:符号位为0,exp全一,frac全0

       负无穷:符号位为1,exp全一,frac全0

       NaN(not a number):exp全一,frac不全为0

放上书上的一张图给大家理解

2. 舍入

        我们都知道,有的小数是无限的,但计算机没办法表示无限的数,因此我们需要根据所能表示的最大位数进行舍入,计算机采用的是向偶数舍入。(四舍六入五向偶)

        看几个例子。比如我们现在需要保留小数点后2位。

        1.453    因为1.453不等于中间值1.455,所以向最近的舍入即1.45

        1.457    因为1.453不等于中间值1.455,所以向最近的舍入即1.46

        1.455    因为1.453等于中间值1.455,而最低有效位等于5为奇数,所以进位即1.46

        1.445    因为1.445等于中间值1.445,而最低有效位等于4为偶数,所以不进位即1.44

        二进制同理,下列数舍入到小数点后一位

        10.010    因为10.010等于中间值10.010,而最低有效位0为偶数,所以不进位即10.0

        10.011   因为10.011不等于中间值10.010,所以向最近的舍入即10.1

        10.110  因为10.110等于中间值10.110,而最低有效位1为奇数数,所以进位即11.0

        11.001    因为11.001不等于中间值11.010,所以向最近的舍入即11.0

3.浮点运算

        浮点运算满足交换律但不满足结合结合律。

        值得注意的是,浮点乘法满足单调律,但补码或无符号数均不满足。

        浮点运算也会溢出,溢出为正无穷或负无穷。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值