当前位置: 首页 > news >正文

计算机组成原理-基本运算部件定点数的运算

2.2基本运算部件

整理自up主beokayy_

1.加法器

一位全加器

  • 全加器是最基本的加法单元:
    • 三个输入端:加数Ai,加数Bi,低位传进来的进位C1-1
    • 两个输出端:本位和S,向高位的进位C
  • 全加器的逻辑表达式:
    • Si=Ai⊕Bi⊕Ci-1
    • Ci=AiBi+(Ai⊕Bi)Ci-1

串行进位加法器

  • 把n个一位全加器相连可得到n位加法器,即串行进位加法器。
  • 模拟人的算法,串行进位加法器的信号是逐级形成的,串行进位又被称作行波进位。
  • 在串行进位加法器中,低位运算产生进位所需的时间将影响高位运算的时间。
  • 因此,串行进位加法器的最长运算时间主要是由进位信号的传递时间决定的,位数越多延迟时间越长。

并行进位加法器

  • 全加器的进位逻辑表达式为Ci=AiBi+(Ai⊕Bi)Ci-1,设Gi=AiBi,Pi=Ai⊕Bi,则Ci=Gi+PiCi-1。
  • 进行下列迭代:
    • C1=G1+P1C0
    • C2=G2+P2C1=G2+P2(G1+P1C0)=G2+P2G1+P2P1C0
    • C3=G3+P3G2+P3P2G1+P3P2P1C0
    • C4=G4+P4G3+P4P3G2+P4P3P2G1+P4P3P2P1C0
  • 从上述迭代后的表达式可以看出,Ci仅与Ai、Bi以及最低位进位C0有关,而相互间的进位没有依赖关系。
  • 因此,只要A1A4、B1B4以及C0同时到达,就可以几乎同时形成C1~C4,并且同时生成各位的和。这样就解决了串行进位加法器需要花费长时间等
    待进位的问题。
  • 实现这个逻辑的电路称为CLA部件。由于各个进位是并行同时产生的,因此这种加法器称为并行进位加法器。
  • 并行加法器的进位很快,与位数无关。但随着位数的增加,C的逻辑表达式会变得非常复杂,电路结构也会随之变得复杂。因此,位数非常多时采用并行加
    法器是不现实的。

2.算术逻辑单元ALU

  • ALU是一种功能较强的组合逻辑电路,可以实现多种算术运算和逻辑运算。
  • 加减乘除运算最终都可归结成加法运算,所以ALU的核心是带标志加法器,同时也能执行与或非等逻辑运算。
  • ALUop控制ALU所执行的处理。ALUop的位数s决定了操作的种类,s位就有2s种。

定点数的运算

1.定点数的移位操作

x<<k(左移)

  • 左移k位,,最高k位舍弃,右端补0
  • 相当于乘2
  • 左移前后符号位改变了,则发生溢出

x>>k(右移)

  • 右移k位,分为两种情况:
    • 逻辑右移(无符号数):左端补k个0
    • 算数右移(带符号数):左端补k个最高有效位的值
    • 相当于除2,所以没有溢出判断

2.定点数的加减法

运算规则

  • 计算机中的带符号数都用补码来表示,故定点数的加减法也用补码
  • [A+B]补=[A]补+[B]补;[A-B]补=[A]补+[-B]补([-B]补=[B]补’+1)
  • 符号位和数值位一起参与运算,结果的符号位在运算中直接得出
  • 最终运算结果的高位丢弃,保留机器字长的位数,得到的结果也是补码

溢出判别

  • 仅当以下四种情况才会发生溢出
    • 正+正=负
    • 负+负=正
    • 正-负=负
    • 负-正=正
  • 一位符号位判别:
    • 设A的符号为As,B的符号为Bs,结果的符号为Ss。则逻辑溢出表达式为V=AsBsSs’+(AsBsSs)’
    • V=0表示无溢出;V=1表示有溢出
    • 还有一种方法:符号位的进位与最高位的进位相同则无溢出,否则就是有溢出
  • 双符号位判别:
    • 两位符号位相同,正常进行计算,两位符号位与溢出情况如下所示:
符号位溢出情况
00正数无溢出
01正溢出
10负溢出
11负数无溢出

乘除法不记录在内,目前只应付期末考试,等考研再来补充

相关文章:

  • JavaScript的三大核心组成:ECMAScript、DOM与BOM
  • pytdx数据获取:在线获取和离线获取(8年前的东西,还能用吗?)
  • 分布式事务Seata-核心问题
  • 【C语言练习】058. 编写函数连接两个字符串
  • 计算机网络——每一层的用到的设备及其作用
  • 打破双亲委派模型的实践:JDBC与Tomcat的深度解析
  • 高效记单词:以load为例,让我们逐水而生
  • 数据采集器实现电源动态能耗追踪的组网配置方案
  • Java中的Switch Case多个条件
  • Vue-js
  • wsl2 不能联网
  • 从零搭建SpringBoot Web单体项目3、SpringBoot 核心组件深度解析
  • 【JVM 03-JVM内存结构之-虚拟机栈】
  • 解释一下NGINX的反向代理和正向代理的区别?
  • Nginx中root与alias的区别及用法
  • 如何使用WordPress区块(以及如何创建自定义区块)?
  • Lavavel学习笔记(Eloquent ORM/Swoole 定时任务)
  • 界面组件DevExpress WPF中文教程:Grid - 行和卡片
  • JVM监控工具
  • ceph osd 磁盘分区对齐
  • 网站防劫持怎么做/企业宣传册
  • 点击网络网站/优化师和运营区别
  • 软件项目管理系统/青岛seo网络优化公司
  • 网站手机端做排名/电商seo优化
  • 网站推广营销策划方案/seo快速排名软件品牌
  • 网页设计与网站建设在线考试/自己做网站建设