当前位置: 首页 > 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负数无溢出

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

http://www.xdnf.cn/news/617941.html

相关文章:

  • 【安全攻防与漏洞​】​​Heartbleed漏洞复现与修复
  • 【JS】vue3具名导出与默认导出
  • [Asp.Net]GridView导出Excel长数字显示成科学计数
  • Spring Boot 项目多数据源配置【dynamic datasource】
  • C++进阶--c++11(02)
  • 【算法】: 前缀和算法(利用o(1)的时间复杂度快速求区间和)
  • 全球复合铁路枕木市场深度分析:技术革新与区域增长潜力(2024-2031)
  • IIS部署微信支付模块问题
  • 欧拉公式的历史脉络、数学证明和现代意义
  • 信息学奥赛及各种程序设计竞赛中常见的名词解释
  • Android四大组件学习总结
  • PyQt学习系列07-数据库操作与ORM集成
  • JavaMail的使用
  • 重读《人件》Peopleware -(12-1)Ⅱ 办公环境 Ⅴ 大脑时间与身体时间(上)
  • 超简单 FishSpeech 本地部署
  • 【游戏设计】游戏玩法与游戏机制
  • 决策树引导:如何选择最适合你的机器学习算法
  • 文章记单词 | 第110篇(六级)
  • Java 8 Lambda 表达式使用说明与案例
  • 前端测试简介
  • Python排序函数全面指南:从基础到高级
  • 字符编码详解:ASCII、Latin1、Unicode、UTF-8 与 GBK
  • 365打卡第N1周: one-hot编码案例
  • 【数据反哺运营】用Python构建可落地的商品结构分析方法论-某朴超市
  • 【风控】申请评分卡(A卡)模型
  • QString 写时拷贝简介
  • 2025年电工杯B题思路讲解问题一四种算法
  • Java 集合框架核心知识点全解析:从入门到高频面试题(含 JDK 源码剖析)
  • 解决:dpkg: error: dpkg frontend lock is locked by another process
  • Coze工作流-变量聚合模块的应用