在学习计算机组成原理的计算方法时,或为步骤疑惑,或为题目难倒,本文主要介绍思路以及对常用类型小结

个人总结,仅供参考,能力有限,难免出错,欢迎大家讨论,书籍参考唐朔飞版《计算机组成原理》

  1. 运算类型主要分为:加减法、乘法、除法。其中乘法分为:原码一位乘补码一位乘、原码两位乘、补码两位乘,除法分为:原码除法和补码除法,在原码除法中又可分为恢复余数法和加减交替法。下面将依次进行介绍和小结。
  2. C语言使用的都是补码,计算机也都采用补码作加减法运算,概括起来分成4步:
  • 将所给真值或机器数转换成补码
  • 若是相减,则将减数的补码变成负减数的补码,以实现相加
  • 两数进行相加
  • 溢出判断

1. 加减法

例1 A=+0.1011,B=-0.0101,求[A+B]补

解:无论是加法还是减法,我们最后都要转换成相加,其中[A]补=0.1011,[B]补=1.1011,则[A]补+[B]补=10.0110,将高位的1移去(这里的移去是计算机自动移去高位)

例2 机器数字长为8位(含1位符号位),若A=+15,B=+24,求[A-B]补

解:[A]补=0,0001111,[B]补=0,0011000,但此时要求的是A-B的补码,又[A-B]补=[A]补-[B]补=[A]补+[-B]补

故求得[-B]补=1,1101000(一个数的负数的补码求法为:连同符号在内,每位取反,末位加1)

则可计算[A]补+[-B]补=1,1110111

小结1:加减法符号位1位,不参与运算,加法器有n+1位,同样也可知累加器ACC和寄存器X也为n+1位,可理解为符号位1位+数值位n位,这里和后面要区分开的一个点,这里的符号位没有单独存放,而是和数据一起存放,详情查阅唐版教材P242和P247(原码一位乘法符号位存放在S中,后面会有小结)

2. 乘法

2.1 原码一位乘法:原码一位乘法开始我也一直没懂,被教材P244的表6.8卡住了,现用我自己的话解释,阅读下面内容需仔细查看教材P243了解小学数学乘法计算步骤。

现在我们有盒子,每个盒子只有5个空位,我们要在盒子里面进行两个数0.1101和0.1011的计算(即0.1101*0.1011),如果我们按照小学数学的乘法,会发现盒子不够用(请动笔按照教材P243算一下,看是不是超过5个空位)。计算机也是这么想的,它要计算很大很多的数据,就想尽可能省空间和运算次数,所以按照P243运算思路,其计算过程如下:

ACC  
X  
MQ  

首先在ACC盒子中放被乘数0.1101,正好5个空位,然后想办法用乘数仿照小学数学乘法去1个1个乘,那就把乘数0.1011放另一个盒子X中。结果我们就放到MQ中吧,但是问题来了,MQ也只有5个空,前面我们的结果0.10001111要9个空,空间不足啊!好办,在乘法过程中,每个乘数的末尾用了一次就不用了,那我们就可以用了之后就把它丢了,那么乘积多出来的部分也可以放。所以就有了教材P244的表6.8

也即,部分积一次一次地放相加结果,加完了右移一位数到乘数空格中,乘数空格本来就5位,故会挤掉低位,这个地位是已经进行运算过了的数,所以丢掉没影响。很多同学包括我,没看懂的原因就是部分积的末位推到了乘数的高位,就像挤牙膏,后面的(部分积)把前面的(乘数)积出来了一点点,但这一点点马上要用来刷牙(已经乘过了),所以没影响。后面其他运算类似,故不再赘述。

小结2:部分积位数n+1,注意加减法中为n,且符号位另有单独的S存放,是通过异或运算得到。因为是原码,进行逻辑移位,故符号位不参与运算。在0.1101*0.1011运算过程中,运算次数是根据1011这4个数决定的,故运算次数是n位,并且我们进行了4次移位,且是在运算之后

2.2 补码一位乘法:两位的运算能简化计算,但对人脑更复杂,考研不考,我们接着看补码一位乘法。

Booth算法:原理和原码一位乘类似,详情参见P254.

小结3:补码考虑到溢出,符号位2位,没有单独运算器,符号位参与运算(是否参与运算的意思,就是算术移位还是逻辑移位的区别。比如原码一位乘,因为是原码,移位的时候不看符号直接添0所以是逻辑移位,而补码一位是跟着符号添加的,故是算术移位,有不清楚的看教材P234的表6.4),同样我们知道符号是参与运算得来的,看最后结果的符号位就行。注意因为一开始需要进行判断正负(因为Booth的原理如此,很长有点难),所以一开始就要进行一次运算,看到底是[-X]补,还是[X]补,所以运算次数是n+1,但移位还是根据本身的位数n,在运算中,因为要判断溢出,现在我们的加法器也就变成了n+2位,也可以记成因为2有两位符号位,所以是n+2.

3. 除法

3.1 原码恢复余数法

核心思想是:相减看是正是负,是正的就说明可以减,那上商1,移位;是负的说明不够减,但现在已经减完了,那要补回来,上商0,移位。如此反复,最后的末位也按此规则。(补码加减交替法末位恒上1)

小结4:此法用的少,首先比较麻烦,最少运算n+1次,最多运算2n+1次,1是第一次进行两数相减判断正负,故为n+1,结合教材P259-260除去恢复的,共5次运算,而本身只有4位数值可进行佐证。移位需n次,上商次数与最低次数相同,为n+1,也即恢复的时候不上商

3.2 原码加减交替法

原码加减交替是在原码恢复余数法基础上改进,本来是负的就补回去,但后面仍要移位,故改成:负的意味着更小,上商0,左移一位之后再加补数,再根据此结果循环。由于一开始要进行相减判断大小,故运算次数n+1次,移位还是n次。并且除法当中左移按逻辑移位(它的原理就是如此),故符号参加运算,但符号位由异或得到,同样由运算器S保存

3.3 补码加减交替法

同为补码,但符号位只有1位,与补码一位乘不同,符号位也是异或得到。上商n+1次,移位n次,符号位参与运算

  符号位 运算参与 运算次数 移位次数 符号结果 符号存储  
原码一位乘 1 No n n 异或 S  
Booth 2 Yes n+1 n 运算 A  
原码恢复 1 Yes n+1~2n+1 n 异或 S  
原码加减 1 Yes n+1 n 异或 S  
补码加减 1 Yes n+1 n 异或 A  

加减法、原码一位乘法、Booth算法、恢复余数法、加减交替法符号位及小结相关推荐

  1. 【细碎知识2】定点数的乘除运算(原码一位乘、恢复余数法、加减交替法)

    目录 1.定点数的乘法 1.1 原码一位乘 2.定点数的除法 2.1 恢复余数法 2.2 加减交替法 2.3 比较恢复余数法和加减交替法 方法要搭配例题一起看,才能看懂 1.定点数的乘法 定点数的乘法 ...

  2. 计组之数据运算:7、定点数原码除法运算(恢复余数法、加减交替法)

    7.定点数原码除法运算 思维导图 原码恢复余数法 原理实现(类比十进制) 机器实现与硬件构成 手算实现 缺点 原码加减交替法 分析 手算实现 补码加减交替法 对比 思维导图 原码恢复余数法 先看一下十 ...

  3. 计算机组成加减交替法被除数,计算机组成原第2章答案.doc

    计算机组成原第2章答案 第2章 综合应用题参考答案 1. 在CRC校验中.已知生成多项式是G(x)=x4+x3+1.要求写出信息1011001的CRC校验码. 解: 生成多项式G(x)=11001,为 ...

  4. 补码一位乘法(Booth算法)

    在补码一位乘法的求解过程中我们需要的东西:[X]补,[Y]补以及被乘数的相反数的补码[-X]补 一.运算规则 1.符号位参与计算 2.采用补码进行计算 3.被乘数X 一般取双符号位参与计算,并且让部分 ...

  5. 原码加减交替法什么时候结束_2021考研初试结束,成绩什么时候公布?

    2021考研初试已经结束了,考完后很多考生都很关注成绩什么时候公布?小编整理了一些省份成绩公布时间,以下时间如有变动,以省招办公布的最新信息为准. 天津:预计2月26日开始 辽宁:2月26日 四川:2 ...

  6. 定点运算之原码的加减交替除法(不恢复余数法)

    加减交替法处理思想是先减后判,如果减余数后发现不够减,则下一步中改为加除数操作 一.运算规则 1.符号位异或运算 2.被除数X ,除数Y均取绝对值的补码,且取双符号位 3.被除数X初始值为 [ |X| ...

  7. 深入理解 原码,反码,补码——证明补码等于反码加1

    文章目录 前言 利用同余数 直接得到 补码 同余数 推导 总结 从原码到反码到补码 原码 反码 反码的问题 解决反码出错的式子 总结 补码 补码解决了跨越问题 为什么补码等于反码+1 前言 根据冯~诺 ...

  8. 三年级乘法计算机应用题目,三年级数学加减计算题大全

    WORD文档电子版排版好A4纸设计直接打印.全部有答案. 可根据您的学习需要定制各种题型小学数学专项练习题. 科学出题.完美排版,字体清晰.字号适当,一键打印,解放家长,解放老师,让您再也不为每天自己 ...

  9. 组成原理---补码加减法,原码一两位乘法,补码一两位乘法,754标准

    翻转课堂,学生讲课,笔记顺便贴上来吧. 万一有人需要呢. 这里754标准其实可以看https://blog.csdn.net/xingqingly/article/details/18981671,我 ...

最新文章

  1. Elasticsearch 运维实战之1 -- 集群规划
  2. android 时间显示格式,Android setting中修改时间显示格式后,桌面的数字时钟widget小部件显示不更新...
  3. oc40--类的启动过程
  4. 霍夫变换(初始学习)
  5. mysql 安装目录说明
  6. volatile、const的用法
  7. python标志变量_Python 中的 global 标识对变量作用域的影响
  8. js 把字符串格式化成时间
  9. SQL 优化推荐书单
  10. vue 中 使用 clipboard 复制内容第一次点击两次才能成功问题修改
  11. OSPF协议单域配置实例
  12. C语言实现根据用户输入的整数求和(两种方法)
  13. 坦克大战(Tank Battalion)------Java代码实现
  14. 2007想飞之旅 (中)
  15. 有discuz数据库,忘了管理员密码,怎样进后台
  16. 排序算法系列:归并排序算法
  17. ecshop小京东首页分类楼层左侧广告修改方法
  18. 排序算法——十大排序算法总结与对比
  19. 一行命令 Ping 网段所有 IP
  20. RecyclerView使用 及 滑动时加载图片优化方案

热门文章

  1. selenium下拉列表定位之 select+option 的定位
  2. 天猫整站Springboot 从零开始搭建(四(2,3))——后台分类管理功能开发
  3. 五、原型模式(Prototype Pattern)
  4. bootstrap4笔记
  5. CCF-CSP 201903-1 小中大(python实现)
  6. 视频浓缩中的轨迹组合技术
  7. 微信小程序之在线任务发布与接单平台(2)
  8. Android-蓝牙的网络共享与连接分析
  9. Android电池信息(Battery information)
  10. Java实现Google的S2算法工具类