【计算机组成原理】定点乘法运算之补码一位乘法(Booth算法)(对初学者的步骤详解)
【计算机组成原理】定点乘法运算之补码一位乘法(Booth算法)(对初学者的步骤详解)
运算规则
- 符号位参与运算,运算的数均以补码表示。
- 被乘数一般取双符号位参与运算,部分积取双符号位,初值为0,乘数可取单符号位。
- 乘数末位增设附加位yn+1y_{n+1}yn+1,且初值为0。
- 根据(yn,yn+1)(y_{n},y_{n+1})(yn,yn+1)的取值来确定操作,参见下表,
- 移位按补码右移规则进行
- 按照上述算法进行n+1步操作,但第n+1不再移位(共进行n+1次累加和n次右移),仅根据yny_nyn与yn+1y_{n+1}yn+1的比较结果做相应的运算。
yny_nyn(高位) | yn+1y_{n+1}yn+1(低位) | 操作 |
---|---|---|
0 | 0 | 部分积右移一位 |
0 | 1 | 部分积加[X]补[X]_{补}[X]补,右移一位 |
1 | 0 | 部分积加[−X]补[-X]_{补}[−X]补,右移一位 |
1 | 1 | 部分积右移一位 |
步骤详解
无题言狗??
放狗,不对,看题。
设机器字长为5位(含1位符号位,n=4),x=-0.1101,y=0.1011,采用Booth算法求X•YX•YX•Y
解:
首先,列出对应的补码。
[X]补=11.0011[X]_{补}=11.0011[X]补=11.0011
[−X]补=00.1101[-X]_{补}=00.1101[−X]补=00.1101
[Y]补=0.1011[Y]_{补}=0.1011[Y]补=0.1011
开始按照要求求解
高位部分积位数对标被乘数X的位数,且符号位取双位:
部分积:00.0000
开始:
(高位部分积) | (低位部分积/乘数) | 说明 |
---|---|---|
00.0000 | 0.1011¦0 丢失位 | 初始情况 |
+[−X]补+[-X]_{补}+[−X]补 00.1101 |
发现是10所以对照表格, 应该部分积加[−X]补[-X]_{补}[−X]补,右移一位 执行本行左边的操作 |
|
右移一位 00.0110 | 10.101¦10 |
我们把高位和低位作为一个整体 进行右移,所以高位最右边的1到 了低位部分的最左边 |
右移一位 00.0011 | 01.010¦110 | 看见上一行的是11所以直接右移一位 |
+[X]补+[X]_{补}+[X]补 11.0011 | 是01所以部分积加[X]补[X]_{补}[X]补,右移一位 | |
和:11.0110 | 001.010¦110 | 开始右移 |
右移一位 11.1011 | 0010.1¦0110 |
因为高位部分在补码中, 最高位是1时右移补1 |
+[−X]补+[-X]_{补}+[−X]补 00.1101 | 部分积加[−X]补[-X]_{补}[−X]补,右移一位 | |
和:00.1000 | 0010.1¦0110 | 开始右移 |
右移一位 00.0100 | 00010.¦10110 | 是01所以部分积加[X]补[X]_{补}[X]补,右移一位 |
+[X]补+[X]_{补}+[X]补 11.0011 | ||
和 11.0111 | 最后一步不再移位 |
所以蓝色部分构成[X•Y]补=1.01110001[X•Y]_{补}=1.01110001[X•Y]补=1.01110001,所以X•Y=−0.10001111X•Y=-0.10001111X•Y=−0.10001111
总结
根据规则,我们给乘数Y增设附加位yn+1y_{n+1}yn+1,且初值为0,提供了图表中的初始情况下的1¦0
课后题:
上述的情况是我们[X•Y][X•Y][X•Y],那么我们计算一下[Y•X][Y•X][Y•X],就可以知道我们是不是掌握了啦!!!
课后题解答
既然是课后题就不写那么详细啦。
首先列出补码:
[Y]补=00.1011[Y]_{补}=00.1011[Y]补=00.1011
[−Y]补=11.0101[-Y]_{补}=11.0101[−Y]补=11.0101
[X]补=1.0011[X]_{补}=1.0011[X]补=1.0011
step1: (高位部分积)00.0000
step2: (低位部分积)1.0011¦0
step3: 高位积加[−Y]补=11.0101[-Y]_{补}=11.0101[−Y]补=11.0101,和:11.0101
step4: 整体右移11,1010 11,001¦10
step5: 整体右移11,1101 01,100¦110
step6: 高位积加[Y]补=00.1011[Y]_{补}=00.1011[Y]补=00.1011,和:00,1000
step7: 整体右移00,0100 00,110¦0110
step8: 整体右移00,0100 00,011¦00110
step9: 高位积加[−Y]补=11.0101[-Y]_{补}=11.0101[−Y]补=11.0101,和:11.0111
和上面详解一样,蓝色部分的数字就是我们想要的结果即[Y•X]补=1.01110001[Y•X]_{补}=1.01110001[Y•X]补=1.01110001
【计算机组成原理】定点乘法运算之补码一位乘法(Booth算法)(对初学者的步骤详解)相关推荐
- 【计算机组成原理】定点乘法运算之补码一位乘法(Booth算法)
x * y = z 讨论已知x和y的情况下,怎么通过补码一位乘法方法得出z- 首先说下运算规则- 和原码一位乘法不同的是,补码一位乘法的符号位是参加运算的~运算的所有的数包括得到的结果z都是补码的形式 ...
- 补码一位乘法(Booth算法)
在补码一位乘法的求解过程中我们需要的东西:[X]补,[Y]补以及被乘数的相反数的补码[-X]补 一.运算规则 1.符号位参与计算 2.采用补码进行计算 3.被乘数X 一般取双符号位参与计算,并且让部分 ...
- 【计算机组成原理】乘法运算
原码乘法运算 r进制乘法可以将乘数变为,第k位数字乘rk. 被乘数变为一个整数乘rx. Ex: 首先需要把0.1101分解为:1101 x 2-4 然后将乘数0.1011分解为:1 x 2-1 + 0 ...
- (计算机组成原理)第二章数据的表示和运算-第二节5:定点数乘法运算(原码/补码一位乘法)
文章目录 一:乘法运算基本思想 二:原码一位乘法 (1)实现原理 (2)手算模拟 三:补码一位乘法( B o o t h Booth Booth
- 计算机组成原理整数乘法,计算机组成原理 - 定点整数的原码补码运算(待验证)...
计算机组成原理 - 定点整数的原码补码运算(待验证) 目录 〇.环境 对象 运算 定点整数原码.定点整数补码 移位.加.减.乘.除 原码定义: \(x=\begin{cases} x &0\l ...
- [计算机组成原理] Booth算法 —— 补码一位乘法
x * y = z 运算规则: 1.和原码一位乘法不同,补码一位乘法的符号位是参加运算的,且运算结果和所有参加运算的数都是补码形式. 2.乘数 x 取双符号位参与运算,部分积的初始值为0: 乘数 y ...
- 计算机组成原理定点除法手工与机器运算本质,计算机组成原理和结构图式(第二章)...
计算机组成原理和结构图式(第二章) 一.数值型数据表示 1)进位计数制spa (1)十进制->二对象 整数部:除基取余 小数部:乘积取整 (2)二进制->按权相加原理 2)数符表示:无符号 ...
- 计算机组成原理:乘法运算
整数乘法与小数乘法完全相同,可用 逗号 代替小数点 原码乘 符号位 单独处理:补码乘 符号位 自然形成: 原码乘去掉符号位运算,即为无符号数乘法. 不同的乘法运算需有不同的硬件支持 乘法运算可 ...
- 补码一位乘法-一般乘法与Booth的证明与原理
补码一位乘法 为什么要使用补码乘法? 在计算机中,使用一般乘法的话,对符号位还要重新进行异或操作,这样会大大降低运算速度,而使用补码乘法运算,就可以找到一种通用的解法来解决符号位的重复计算,而将符号位 ...
- 一位原码的乘法规则_原码一位乘法与补码一位乘法
原码1位乘法 在定点计算机中,两个原码表示的数相乘的运算规则是:乘积的符号位由两数的符号按异或运算得到.而乘积的数值部分则是两个正数相乘之积.设n位被乘数和乘数用定点小数表示(定点整数也相同适用) 被 ...
最新文章
- SAP QM初阶之事务代码QS28
- 刀片服务器在现有数据中心的应用策略
- Webstorm PhpStorm的序列号和证书
- eclipse java jdk_设置Eclipse和Java JDK
- scala中_下划线的使用
- POJ 2106-Boolean Expressions,双栈运用类似表达式求值!
- 怎样用一份数据透视表打动老板
- 原创:微信小程序调用【统一下单】、【支付】、【支付回调】api并处理请求...
- JDK命令一、javah命令(C Header and Stub File Generator)
- Android 手机修改 WiFi MAC 地址
- web服务器主机头文件,在Win2k下建立虚拟Web主机
- 查看电脑连接过的无线网密码
- Android【WebView】
- JAVA简单的银行管理系统
- js添加多marker 高德地图_覆盖物-参考手册-地图 JS API | 高德地图API
- docker守护进程启动容器时报错Error response from daemon: Container is not running
- 在C4D中如何切换中英文
- MessageQueue.IdleHandler接口使用方法以及原理分析
- USB联机线编程接口(API)
- python 压缩与解压文件
热门文章
- 支付宝-第三方应用授权
- Windows 各平台远程桌面客户端
- android 波斯文排序,android 阿拉伯,波斯字符串从右到左显示问题
- Rplidar A1利用Qt图形库进行周围环境的轮廓抓取
- 安信可Ca-01 4G模块调试
- 【综合实训】图书管理系统——概要设计说明书
- CMMB 全国各地市频率规划表
- java nio 捕获异常_java nio channel抛出ClosedByInterruptException的情况
- java定时器表达式_Java Quartz表达式每分钟执行1次
- Vs2010中文版 使用 .net 3.5 时,智能提示英文变中文