计算机组成原理笔记 第二章(3)
本节:
浮点数的表示范围从考研大纲删了
存储就存这个E和M 我们是二进制 r也就等于2 类似科学计数法
用分号分割阶码和尾数
看一下例题:
这个很好理解 a的计算
对于b:
如果我们也像a这么存 会舍弃掉最后的那个1导致数据出错
我们就应该这样进行左移 数据一样不变 这样就能存了:
是因为尾数最高位是个0 但是这个0有没有都一样 就好比03和003都是表示3 我们不妨去左移消去这个0 免得它占位置
这就是浮点数的规格化 我们再来看一下右移的例子
这时候就体现出双符号位的优越性了 如果有高位溢出 直接右移就可以了
这个能看懂…只要记住尾数最高位必须是有效位就可以了
再了解一下浮点数的溢出:
根据以上的内容 进行一些约定 形成了IEEE 754标准
这个真的超好理解 数符位是s M是尾数 原码的有效位一定是1我们直接省去 移码偏置值也给出来了 公式很好理解
临时浮点数不常考
一些规定:
至此 浮点数的表示结束了:
考纲中只有浮点数的加减运算:
很好 接下来的内容就是这些:
浮点数加减运算的步骤; 舍入这个步骤比较复杂 所以考试不做过多要求
看一下例子:
第一步转为补码 是可以看懂的
之后开始对阶(使小数点对齐)
计算机无法肉眼看大小 只能求阶差 我们遵循小阶向大阶看齐的原则
求阶差的时候 阶差的补码等于 X加上Y的反码 然后阶差等于是负一的补码 课件是这个意思 但是为什么?
我要问为什么?????真的不懂 为什么要求阶差的补码 为什么X-Y的补码等于X加上Y的反码 为什么???
打扰了 看一下电子科大的课件:
首先我们阶码的加减的推导是这样的:
课件也透露了这么一个信息 减去一个数Y 等效于加上Y的求补结果或者加上-Y的补码
阶码相加:
如果是减法 就是这样的:
好 清楚明白 给了我们两个公式求阶码的加减(计算机内部是用移码表示 实际手算其实不需要这样 我们是在模拟计算机计算)
这里最高位1(第九位)舍去了 因为是对256取模 132模256还是132 而132减去偏移值就是结果 5 所以正确
那么问题愉快的解决了 这两个例子足够演示非标准移码加法和减法
浮点数加减法的基本思路: 这个好理解吧
对 规格化的时候别忘了 阶码也要变
规格化的时候移位可能导致阶码溢出 只要阶码溢出 …结果就不正确了
下面赶紧看一下例子
这个例子真的很好 包含的内容很多 首先你要把X和Y表示成IEEE标准
然后你要求阶差 进行判断 这里阶差发现是1 说明x-y的阶差大于0 x比y大
对阶就把y右移 因为浮点数的表示隐藏了位数的最高有效位1 所以右移的时候添1
之后尾数的真值相加 要用到原码的加减法 因为这两个尾数异号 所以还需要一番操作
之后得到的结果我们还要进行规格化
然后对阶也对了 尾数也求出来了 我们就能写出x+y了
所以需要再把之前的看一遍 一定要搞懂…真的
说实话这部分还挺麻烦的md