计算机组成原理<四>——数据的表示和运算(下)(二)

简介: 计算机组成原理<四>——数据的表示和运算(下)

乘法运算


原码的乘法运算

我们小学的时候算两个数相乘是怎么计算的?现在我们先来模拟一下手算乘法:

image.png

实际上就是:

0.1011(乘数)=1*2^-1+0*2^-2+1*2^-3+1*2^-4

0.1101(被乘数)=1101*2^-4

0.1101*0.1011=(1101*1*2^-8)+(1101*2^-7)+(1101*2^-6)+(1101*2^-5)

用移位就可以实现

现在我们要考虑如何用机器实现:

  • 实际数字有正负号,符号位如何处理?
  • 乘积位数扩大一倍,该如何处理?
  • 4个位积都要保存下来最后统一相加?

我们带着这几个问题,接着往下面走:

先看一下这个图,后面会用到

image.png

首先看一道例题:

image.png

image.png

ACC全部初始化为0,看MQ的最右边的第一位是1/0,当前位为1则ACC加上被乘数,为0则ACC加上0

image.png

丢弃的那一位就不用看了,直接看方格里的,MQ的最右边第一位还是1,则ACC加上被乘数

00110+01101=10011,然后再逻辑右移一位,ACC高位补0

image.png

重复上面的过程,MQ的右边第一位是0,则ACC加上0,再逻辑右移一位

image.png

MQ的右边是1,则ACC+X;00100+01101=10001,再逻辑右移一位

image.png

下一个0了,但这个0不需要参与运算,因为他是乘数的符号位

还需要根据异或的结果来修改这个符号位:这里显示是-1

最后结果就是:1.10001111

到这里ACC为什么叫乘积高位,MQ为什么叫乘积低位相信大家也都理解了

手算模拟

  • 乘数的符号位不参与运算,可以省略
  • 原码一位乘可以只用单符号位
  • image.png
  • 总结:符号位通过异或确定,数值部分通过被乘数和乘数绝对值的n论加法,移位完成,根据当前乘数中参与运算的位确定(ACC)加什么。若当前运算位=1,则(ACC)+[|x|]原;若=0,则(ACC)+0;每轮加法后ACC,MQ的内容统一逻辑右移

补码的乘法运算

首先来看下原码和补码乘法的区别

image.png

那么上面说到补码要借助辅助位,那就让我们来看看补码的运算器是怎么样的

image.png

手算模拟

image.png

除法运算

原码的除法运算

原码的除法运算有恢复余数法和不恢复余数法(加减交替法),这里主要介绍加减交替法

手算除法

image.png

如何把这种手算的思想,用手算来实现?

image.png

样,符号位用异或单独处理,数值位取绝对值进行除法计算

恢复余数法: (机器)

image.png

计算机很傻,会先默认上商1,如果搞错了再改上商0,并恢复余数

默认上商1,用被除数减去除数来判断是否商1是否正确,

image.png

ACC-除数转换成:

ACC+[-|y|]补->ACC:01011+10011=11110

image.png

当机器检测出ACC的首位是1,也就是负数,发现错误了,应该商0,需要恢复余数,这也就是这个名字的由来

恢复余数:ACC+[|y|补]->ACC :11110+01101=01011

image.png

这时需要ACC和MQ中内容逻辑左移(符合手算除法),低位补0

image.png

下面就和前面一样,需要先商1,然后相减判断ACC首位是否为1,为1则进行恢复余数,再进行逻辑左移,不为1,则不需要恢复余数,直接逻辑左移就行了.这里就不一一展开了,直接给出最后结果,大家可以去试试

image.png

恢复余数法(手算)

image.png

image.png

每次我们都商1,然后恢复余数,这样显示是很麻烦的,那我们能不能减少操作,不恢复余数囊?

我们接着往下看:

image.png

根据上面的分析,当余数为负数时,我们不必要进行恢复余数,上图就是它从a变成了2*a-b;也就是向左移一位然后加上|除数| 。这样我们就引出了加减交替法:

加减交替法:

image.png

补码的除法运算(加减交替法)

补码一位除法的特点是,符号位与数值位一起参加运算,商符自然形成.除法第一步根据被除数和除数的符号决定是做加法还是减法;上商的原则根据余数和除数的符号位共同决定,同号上商"1",异号上商"0";最后一步商恒置"1"。

加减交替法的规则如下:


符号位参加运算,除数与被除数均用补码表示,商和余数也用补码表示

若被除数与除数同号,则被除数减去除数;若被除数与除数异号,则被除数加上除数

若余数与除数同号,则商上1,余数左移一位减去除数;若余数与除数异号,则商上0,余数左移一位加上除数

重复执行第3步操作n次

若对商的精度没有特殊要求,则一般采用"末位恒置为1"法

image.png

image.png

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
11月前
【408计算机组成原理】—移位运算(七)
【408计算机组成原理】—移位运算(七)
408计算机组成原理学习笔记——运算方法和运算电路(一)
408计算机组成原理学习笔记——运算方法和运算电路
359 1
408计算机组成原理学习笔记——运算方法和运算电路(一)
409计算机组成原理学习笔记——运算方法和运算电路(二)
409计算机组成原理学习笔记——运算方法和运算电路(二)
371 1
409计算机组成原理学习笔记——运算方法和运算电路(二)
|
存储
410计算机组成原理学习笔记——运算方法和运算电路(三)
410计算机组成原理学习笔记——运算方法和运算电路(三)
543 1
410计算机组成原理学习笔记——运算方法和运算电路(三)
|
存储
410计算机组成原理学习笔记——运算方法和运算电路(四)
410计算机组成原理学习笔记——运算方法和运算电路
194 1
410计算机组成原理学习笔记——运算方法和运算电路(四)
408计算机组成原理学习笔记——浮点数的表示和运算
408计算机组成原理学习笔记——浮点数的表示和运算
1035 1
408计算机组成原理学习笔记——浮点数的表示和运算
计算机组成原理<三>——数据的表示和运算(上)
计算机组成原理<三>——数据的表示和运算(上)
计算机组成原理<三>——数据的表示和运算(上)
|
存储 人工智能 BI
计算机组成原理<四>——数据的表示和运算(下)(三)
计算机组成原理<四>——数据的表示和运算(下)
计算机组成原理<四>——数据的表示和运算(下)(三)