COA-19-第四章 Integer Arithmetic
Integer Arithmetic
- 1. ALU是什么
- 2. 加法(全加器)
- 2.1. 如何产生一位相应的数据
- 2.2. 如何生成全部的数据
- 2.3. 问题
- 2.4. 解决问题:先行记录加法器(CLA)
- 2.5. 进一步的解决方法:部分先行加法器
- 2.6. 加法溢出
- 2.6.1. 判定溢出
- 3. 减法计算
- 4. 乘法操作
- 4.1. 乘法操作的实现
- 4.2. 问题:积的补码不等于补码的积
- 4.3. Booth’s算法
- 5. 除法操作
- 5.1. 除法的情况分类
- 5.2. 除法的实现
- 5.2.1. 除法的机器级实现
- 5.2.2. 除法的规则
- 5.3. 第一种除法的过程
- 5.3.1. 机器如何确定是否够减并且可以保证不够减的时候可以回溯呢?
- 5.3.2. 实例
- 5.4. 第二种除法的算法
- 5.4.1. 除法计算结束后的修正
- 5.5. 除法器
1. ALU是什么
- ALU is that part of the computer that actually performs arithmetic and logical operations on data(ALU是计算机使用数学或者逻辑处理数据的部分)
- Data are presented to the ALU in registers, and the results of an operation are stored in registers(数据被存储在ALU的寄存器中,运算的结果也被存储到寄存器中)
- The flag values, also stored in registers, are set as the operation result(标记值也存储在寄存器中并且被标记为运算结果)
- The control unit provides signals that control the operation of the ALU and the movement of the data into and out of the ALU(控制单元提供控制ALU运算以及需要移入或者移出ALU的数据的信号)
2. 加法(全加器)
- 输入x,y,ci-1
2.1. 如何产生一位相应的数据
- Si = Xi ⊕ Yi ⊕ Ci-1
- Ci = XiYi + Ci-1Xi + Ci-1Yi(乘法是and,加法是or)
- 每一个carryout:2ty的延时
- 每一个sum:6ty的延时
2.2. 如何生成全部的数据
- 将全加器串联起来即可。
- Sn = 2(n-1)+3 = 2n+1
- 在等待C来的时候,已经提前把Xi和Yi进行计算。
- 那么n=1的时候,为什么计算出来是3,而实际是6?因为需要n>=3的时候才能满足这个事情。2(n-1)>=3才行。
- S1 = 6,S2 = 6,S3 = 7;S1和S2是同时出来的,只要C过去了就行。
2.3. 问题
- 速度比较慢。
- 和数据量成线性相关。
2.4. 解决问题:先行记录加法器(CLA)
- 定义
- Pi = Xi + (或)Yi
- Gi = Xi & Yi
- 新的计算方法:(并行运算)
- 所有的Pi、Gi都是可以同时计算的,代价是:1ty
- 求出所有的Ci,代价:2ty
- 先计算所有的与,多个与也可以一次计算
- 再计算所有的或,一次计算。
- 求出所有的Si,代价:3ty
- 就是原来的异或。只需要再做一次就可以
- P是传播,G是生成。
2.5. 进一步的解决方法:部分先行加法器
- 最后算出的是最前面的加法部分
- 最左边是3 = 1 + 2
- 然后中间两个+2:之前P和G都算好了。
- 最后一步5 = 2 + 3
- P和G已经算好了
- 多一个加2
2.6. 加法溢出
- 按照钟表来想,拨过了头。
- 两个正数相加不可能暨移除,并且结果是个正数。
2.6.1. 判定溢出
第一种情况
Cn | Cn-1 | Xn | Yn | Sn |
---|---|---|---|---|
1 | 0 | 1 | 1 | 0 |
0 | 1 | 0 | 0 | 1 |
第二种情况
Xn | Yn | Sn |
---|---|---|
0 | 0 | 1 |
1 | 1 | 0 |
- 只要有两位及以上位均为1则产生了进位。
3. 减法计算
- X - Y = X + (-Y)
- Sub是控制线,是1则为减法,是0则为加法。
- Sub为1时,会走下面的路,也就是取反。
- Sub的另一端连接到C0的位置上。
4. 乘法操作
- 这时候出现问题:纵向相加,加法的时候会移位。
- 部分积(partial product)
- 将加法器左移,可以变成部分积右移,只留下来最高部分来进行加。
- 高位补充0,小数点在最右边
- 小数相除小数点在左边?
4.1. 乘法操作的实现
- Y在有意义的变短,有一部分就已经不需要使用了。
- 所有Y和product是此消彼长的。
- 长的整体无论红黑都是部分积。
4.2. 问题:积的补码不等于补码的积
- 在加法中很顺利的原码在这里是不顺的。
- 问题解决:如何用补码来计算
4.3. Booth’s算法
- Xc * Yc = X * (-Yn * 2n-1 + Yn-1 * 2n-2 + … + Y1*20)
- 算法核心:2k = 2k+1 - 2k
- 将算法核心带入1中的式子:= X * ((Yn-1 - Yn)*2n-1 + (Yn-2 - Yn-1)*2n-2 + … + (Y1 - Y2)*21 + (Y0 - Y1)*20)
- Y0 = 0
- 这样子也就会满足原来的阶乘的形式。
算法内容
算法问题
- 在高位补充的时候应该是符号扩展。
- -7:1001;-6:1010
5. 除法操作
5.1. 除法的情况分类
- -7/3 = -2…-1
- 被除数需要进行符号扩展,被除数减去除数。
- 商先产生高位,这样子的资源和性能依然不够经济。
- 余数是n位,被除数是n位和被除数的2n位是一致的。
5.2. 除法的实现
- 最开始,除数放到商的位置上,而余数的位置上全是符号扩展位。
- 每一次左移。
- 如果够减的话,就减去除数写入1
- 如果不够减的话,就直接写入0
5.2.1. 除法的机器级实现
5.2.2. 除法的规则
- 如何判断够还是不够?余数的绝对值靠近0而不越过0。
- 负数除以正数的余数是负数
- 正数除以负数的余数是正数
- 负数除以负数的余数是负数
5.3. 第一种除法的过程
- 首先对于符号位进行扩展,并且存储到分别的余数部分和商部分。
- 左移余数和商,判断余数存储器是否足够大。
- 如果足够大,那么就做加法或者减法并且在商的右侧添加一个1
- 如果不足够大,那么直接在商的右侧直接加上一个0
- 重复以上的两个步骤。
- 最后全部计算结束后的注意点:
- 如果除数和被除数的符号相反,那么商需要取其补码。
- 余数被存储在余数寄存器中。
5.3.1. 机器如何确定是否够减并且可以保证不够减的时候可以回溯呢?
- 先减去再加上
- 本来应该先减去再加变成
5.3.2. 实例
- 最后是减去divisor
- 商是左移加一
5.4. 第二种除法的算法
- 首先将被除数进行符号扩展,并且分别将其存到余数和商的寄存器中。
- 如果被除数和除数的符号相同,那么进行减法。如若不然进行加法。
- 如果余数和除数的符号相同,则Qn=1,不然Qn=0
- 根据余数和除数的符号关系来决定如何进行计算。
- 如果新得到的余数和除数符号相同,那么我们给商加上一个1,不然加上一个0。
- 重复上述操作
5.4.1. 除法计算结束后的修正
- 对商的修正,如果商是负的就加上1
- 对除数的修正,如果符号不同的,如果除数和被除数符号是否相同,如果相同,我们需要减去除数。
- 还要看余数是否和除数相同,如果相同要进行处理
5.5. 除法器
COA-19-第四章 Integer Arithmetic相关推荐
- [云炬创业基础笔记]第四章测试19
第四章测试 I19.单选题(1分) 答题卡 19/24 发现问题的能力对于创业者来说很重要,它有助于创业者发现社会中的痛点.0 正确 错误 本题得分:1 正确答案: A 已提交
- 第四章 ContextCapture 19 空三控制点平差
第四章 ContextCapture 19 空三控制点平差 一.检查空三成果 空三结束后,会生成连接点云,再三维中,可以观察生成的结果,根据点云的状态,判断空三是否正常. 在这个位置,可以导出空三报告 ...
- 19年8月 字母哥 第四章 常用web开发数据库框架 不要用公司网络加载不出来 用热点!!!
第四章 常用web开发数据库框架 4.1.整合Spring JDBC操作数据 4.2 Spring JDBC多数据源的实现 4.3.Spring JDBC JTA实现分布式事务 4.4.ORM主流框架 ...
- c command语言学例子,语言学第四章
<语言学第四章>由会员分享,可在线阅读,更多相关<语言学第四章(3页珍藏版)>请在人人文库网上搜索. 1.Chapter 4:SyntaxI. Decide whether e ...
- 【Java基础学习笔记】- Day11 - 第四章 引用类型用法总结
Java基础学习笔记 - Day11 - 第四章 引用类型用法总结 Java基础学习笔记 - Day11 - 第四章 引用类型用法总结 4.1 class作为成员变量 4.2 interface作为成 ...
- matlab高级数据结构,Matlab讲义-第四章Matlab语言数据结构1-10.pdf
Matlab讲义-第四章Matlab语言数据结构1-10.pdf 第四章第四章 Matlab语言基础语言基础 Matlab语言程序简洁.可语言程序简洁.可 读性很强而且调试十分容易.读性很强而且调试十 ...
- 20190827 On Java8 第十四章 流式编程
第十四章 流式编程 流的一个核心好处是,它使得程序更加短小并且更易理解.当 Lambda 表达式和方法引用(method references)和流一起使用的时候会让人感觉自成一体.流使得 Java ...
- 《Java语言程序设计与数据结构》编程练习答案(第四章)(二)
<Java语言程序设计与数据结构>编程练习答案(第四章)(二) 英文名:Introduction to Java Programming and Data Structures, Comp ...
- 数据结构1800试题(第四章)
第四章 串 一.选择题 1.下面关于串的的叙述中,哪一个是不正确的?( )[北方交通大学 2001 一.5(2分)] A.串是字符的有限序列 B.空串是由空格构成的 ...
最新文章
- R语言ggplot2绘制平滑曲线的折线图简单小例子
- 【Linux 操作系统】 Secure CRT 终端配置 -- 配置语法高亮 光标 和 字体
- C# 使用FileSystemWatcher来监视文件系统的变化
- jQuery formValidator表单校验代码生成器ver1.0
- 交换机端口灯闪烁频率一样_思创易控cetron-新品S2024GE 24口全千兆非网管交换机即将上市!...
- 【Python】Pandas高效加载JSON文件
- java中gc触发的条件,各种gc触发条件统计
- 史密斯预估器matlab仿真,(毕业论文)史密斯预估器设计.doc
- RDD Join 性能调优
- android 全局 窗口,学习笔记:WindowManager显示Android全局悬浮窗口
- 疯狂软件对Oracle放弃Java EE的看法
- 电梯设计需求调研报告
- iptables端口转发
- 【渝粤教育】电大中专药理学基础 (2)_1作业 题库
- 军团指挥官(权限题)
- mysql触发器new old用法详解
- 物理机、虚拟机、容器的比较(二)
- 盯上年轻人的今日头条,重新以内容出发还有多少可能?
- html怎么做一个动态广告图,用CSS3实现广告的展示动画特效
- Linux安装MySQL(源码安装)
热门文章
- 如何利用鲍伊-迪克测试法测试饱和蒸汽?以确保适当灭菌消毒
- UEFI启动是什么意思 UEFI启动对比Bios启动优势在哪里
- 南航829数据结构单链表学习
- 解决chrome插件安装时出现的“程序包无效”问题信息:程序包无效。
- Nodejs框架分享
- 2021年B证(安全员)考试题及B证(安全员)答案解析
- 【多目标优化求解】基于matlab飞蛾扑火算法 (NSMFO)求解多目标优化问题 【含Matlab源码 2312期】
- 数分项目《泰坦尼克》——Task2
- Python 中的位运算-基础知识
- python基础(四)python中的位运算