没有合适的资源?快使用搜索试试~ 我知道了~
计算机组成原理之原补码的乘法运算
需积分: 20 3 下载量 81 浏览量
2023-02-13
23:22:24
上传
评论
收藏 10.31MB PDF 举报
温馨提示
试读
29页
计算机组成原理之原补码的乘法运算
资源推荐
资源详情
资源评论
一、原码乘法运算
(1)手算乘法
1.十进制乘法
2.二进制乘法
3.一些问题
(2)机器实现
1.案例
2.确定符号位
3.绝对值相乘的机器实现
4.补充说明
(3)手算模拟原码一位乘法
二、补码乘法运算
(1)原码与补码
(2)补码乘法运算的硬件构成
(3)手算模拟
三、回顾
一、原码乘法运算
经过之前小节的学习,我们已经知道了定点数的加法、减法,还有移位运算如何实现。
这小节中我们要学习定点数的原码乘法如何实现。
这一小节中,我们会首先探讨乘法运算的实现思想,介绍原码的移位乘法如何实现。最后还会介绍
补码的一位乘法如何实现。
(1)手算乘法
1.十进制乘法
首先来看一下大家比较熟悉的 十进制的乘法 。
回忆一下小学时候如何做一个乘法运算的。比如 0. 985 乘以 0. 211,如果算上小数点之前的0,这
两个数都是4位,都有 4 个数码位。
首先是 1 乘以985,把它写在下面。
接下来还有一个 1 乘以985,但是这一次的 985 要和上一个 985 进行一个错位,相对于上一个 985
来说,要往前移一位。
最后2乘以 985 应该是等于1970,同样的, 1970 的最后一位又要比上一个 985 再往前挪了一位。
每一个数码位进行乘法运算得到的结果,我们是把它们错位地排列在一起的。最后我们会把它进行
一个相加,得到这样的结果。
最后小学老师会告诉我们如何处理小数点。小时候老师教我们的做法是从最后位置往前数 6 位就到
了 2 的前边,所以小数点最终确定在 2 的前面。如下:
这就是 0. 985 乘以 0. 211 的一个手算方式。
这是我们小学时候学过的东西,现在的问题是这样的,不知道大家有没有思考过,为什么我们在写
这些每一位乘得的结果的时候,都要错位得把它们写在一起。
其实这个原因可以结合我们之前介绍过的 r 进制的数值的定义来进行理解。
0.211 这个数我们可以把它看作是 2 乘以 10 的-1 次方,加上 1 乘以 10 的-2次方,再加上 1 乘以
10 的-3次方。 0. 985 我们不妨把它看作是 985 乘以 10 的-3 次方。如下:
所以这两个数相乘,我们可以把它拆分成这样的形式:
985 乘以 10 的-3 次方,再乘以 1 乘 10 的 -3 次方,也就是 985 乘以 1 乘 10 的-6 次方。
这一项再加上 985 乘 1 再乘以 10 的-5 次方。也就是和这儿的第二项的一个结合,最后这项也是一
样的。
所以其实这个式子如果我们把中间加和的这些部分给它扩展一下,其实它是长这个样子。
985 乘以1,再乘以 10 的- 6 次方,就相当于 985 从这个位置小数点往前移 6 位。
985 乘以1,再乘以 10 的- 5 次方,就相当于从 985 数这儿把小数点往前挪 5 位。最后这个数也是
一样的, 985 乘以 2 等于 1970。本来小数点在 0 的后面,乘了一个 10 的-4,就相当于往前挪4位。
所以我们最终要给这几个小数进行一个加和。
是不是得保证这个小数点是相互对齐的,而小数点相互对齐,就会导致我们后边这些数有这样的一
个错位。
所以这就是为什么我们小时候学的乘法,需要把每一位的位积进行一个错位的原因,这才是它的本
质。
2.二进制乘法
这是我们熟悉的十进制乘法,接下来我们把这种乘法的思想迁移到 二进制的乘法 。
同样先来看手算的方式。
假如有这样的两个二进制数的相乘,比如两个定点的正小数进行相乘,并且每个定点数占 5 位,类
似于十进制 0. 985 乘以 0. 211 的乘法。
首先我们应该用乘数的最低位(1)乘上被乘数,得到的结果应该是1101。
再用乘数的下一位(次第位)乘以被乘数,得到的结果同样是1101,不过我们要把它往前挪一位,
进行一个错位。
接下来 0 乘以被乘数,得到结果应该是 0000。
最后是 1 乘以这个被乘数,得到结果是1101。把它们错位并且依次相加之后,可以得到这样的一个
结果。 如下:
接下来确定小数点的位置应该是从最后位置往前移8位,也刚好到了 1 的前面。
原因和十进制是一样的。
十进制最终得到的结果。我们在确定小数点的时候,采用的最原始的方法是看一下被乘数(0.985)
它小数点往前移了3位,乘数(0.211)是往前移3位。所以这两个数加起来总共需要从最后位置往前移 6
位。
用这样的方式来确定小数点的位置,二进制的确定方式也是一样的。
现在我们使用和之前类似的思路,把这个式子进行一个完善。
其实每一位和被乘数的积进行错位相加的原因是这样的。我们把乘数按位权进行展开,把被乘数与
乘数各个项分别进行相乘相加,进行展开,就会得到这样的一个式子。如下:
第一项对应于 1101 乘以 2 的- 8 次方,也就是最低位的位积。第二个部分是对应了次低位的位积。
第三部分乘了一个0,但是我们还是把它统一的写成 0. 000000 这样的形式,保持队形一致。最后这一
项也是类似。
所以我们模仿十进制得到的上图左边这种乘法规则,其实是正确无误的。
我们把它展开就可以看到背后的逻辑。
所以二进制的原码乘法实现起来要比十进制还要方便。因为二进制的乘数每一位只有可能出现 0 或
者 1 这样的两种情况。
剩余28页未读,继续阅读
资源评论
雨翼轻尘
- 粉丝: 6w+
- 资源: 130
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 机器学习和数据挖掘课程设计-米其林餐厅数据挖掘管理系统源码+使用文档说明.zip
- html html html展示我与ai的对化
- 数据结构课程设计-全国交通出行咨询模拟系统C语言实现源码.zip
- cef-binary-109.0.1+gcd5e37a+chromium-109.0.5414.8-windows32
- 基于C语言的全国交通咨询系统模拟源码.zip
- 正点原子HAL库 STM32F4 DMA(学习自用附源码)
- 炫酷代码雨,超级炫酷哦!!!
- 基于物联网MQTT协议的智能停车场管理系统
- POETIZE个人博客系统源码 - 最美博客
- 基于深度学习的行人检测系统源码+项目说明(YoloV3+Tensorflow).zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功