zoukankan      html  css  js  c++  java
  • 计算机组成原理笔记 第二章(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

  • 相关阅读:
    leetcode-String to Integer (atoi)
    2014薪水
    Ubunt下的软件集
    ubuntu常用软件
    python模块安装
    ubuntu下玩三国杀
    递归函数
    匿名函数
    装饰器函数
    生成器
  • 原文地址:https://www.cnblogs.com/ranzhong/p/13121444.html
Copyright © 2011-2022 走看看