【计算机组成原理】定点乘法运算之补码一位乘法(Booth算法)(对初学者的步骤详解)

运算规则

  1. 符号位参与运算,运算的数均以补码表示。
  2. 被乘数一般取双符号位参与运算,部分积取双符号位,初值为0,乘数可取单符号位。
  3. 乘数末位增设附加位yn+1y_{n+1}yn+1​,且初值为0。
  4. 根据(yn,yn+1)(y_{n},y_{n+1})(yn​,yn+1​)的取值来确定操作,参见下表,
  5. 移位按补码右移规则进行
  6. 按照上述算法进行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算法)(对初学者的步骤详解)相关推荐

  1. 【计算机组成原理】定点乘法运算之补码一位乘法(Booth算法)

    x * y = z 讨论已知x和y的情况下,怎么通过补码一位乘法方法得出z- 首先说下运算规则- 和原码一位乘法不同的是,补码一位乘法的符号位是参加运算的~运算的所有的数包括得到的结果z都是补码的形式 ...

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

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

  3. 【计算机组成原理】乘法运算

    原码乘法运算 r进制乘法可以将乘数变为,第k位数字乘rk. 被乘数变为一个整数乘rx. Ex: 首先需要把0.1101分解为:1101 x 2-4 然后将乘数0.1011分解为:1 x 2-1 + 0 ...

  4. (计算机组成原理)第二章数据的表示和运算-第二节5:定点数乘法运算(原码/补码一位乘法)

    文章目录 一:乘法运算基本思想 二:原码一位乘法 (1)实现原理 (2)手算模拟 三:补码一位乘法( B o o t h Booth Booth

  5. 计算机组成原理整数乘法,计算机组成原理 - 定点整数的原码补码运算(待验证)...

    计算机组成原理 - 定点整数的原码补码运算(待验证) 目录 〇.环境 对象 运算 定点整数原码.定点整数补码 移位.加.减.乘.除 原码定义: \(x=\begin{cases} x &0\l ...

  6. [计算机组成原理] Booth算法 —— 补码一位乘法

    x * y = z 运算规则: 1.和原码一位乘法不同,补码一位乘法的符号位是参加运算的,且运算结果和所有参加运算的数都是补码形式. 2.乘数 x 取双符号位参与运算,部分积的初始值为0: 乘数 y ...

  7. 计算机组成原理定点除法手工与机器运算本质,计算机组成原理和结构图式(第二章)...

    计算机组成原理和结构图式(第二章) 一.数值型数据表示 1)进位计数制spa (1)十进制->二对象 整数部:除基取余 小数部:乘积取整 (2)二进制->按权相加原理 2)数符表示:无符号 ...

  8. 计算机组成原理:乘法运算

    整数乘法与小数乘法完全相同,可用 逗号 代替小数点 原码乘   符号位 单独处理:补码乘   符号位 自然形成: 原码乘去掉符号位运算,即为无符号数乘法. 不同的乘法运算需有不同的硬件支持 乘法运算可 ...

  9. 补码一位乘法-一般乘法与Booth的证明与原理

    补码一位乘法 为什么要使用补码乘法? 在计算机中,使用一般乘法的话,对符号位还要重新进行异或操作,这样会大大降低运算速度,而使用补码乘法运算,就可以找到一种通用的解法来解决符号位的重复计算,而将符号位 ...

  10. 一位原码的乘法规则_原码一位乘法与补码一位乘法

    原码1位乘法 在定点计算机中,两个原码表示的数相乘的运算规则是:乘积的符号位由两数的符号按异或运算得到.而乘积的数值部分则是两个正数相乘之积.设n位被乘数和乘数用定点小数表示(定点整数也相同适用) 被 ...

最新文章

  1. SAP QM初阶之事务代码QS28
  2. 刀片服务器在现有数据中心的应用策略
  3. Webstorm PhpStorm的序列号和证书
  4. eclipse java jdk_设置Eclipse和Java JDK
  5. scala中_下划线的使用
  6. POJ 2106-Boolean Expressions,双栈运用类似表达式求值!
  7. 怎样用一份数据透视表打动老板
  8. 原创:微信小程序调用【统一下单】、【支付】、【支付回调】api并处理请求...
  9. JDK命令一、javah命令(C Header and Stub File Generator)
  10. Android 手机修改 WiFi MAC 地址
  11. web服务器主机头文件,在Win2k下建立虚拟Web主机
  12. 查看电脑连接过的无线网密码
  13. Android【WebView】
  14. JAVA简单的银行管理系统
  15. js添加多marker 高德地图_覆盖物-参考手册-地图 JS API | 高德地图API
  16. docker守护进程启动容器时报错Error response from daemon: Container is not running
  17. 在C4D中如何切换中英文
  18. MessageQueue.IdleHandler接口使用方法以及原理分析
  19. USB联机线编程接口(API)
  20. python 压缩与解压文件

热门文章

  1. 支付宝-第三方应用授权
  2. Windows 各平台远程桌面客户端
  3. android 波斯文排序,android 阿拉伯,波斯字符串从右到左显示问题
  4. Rplidar A1利用Qt图形库进行周围环境的轮廓抓取
  5. 安信可Ca-01 4G模块调试
  6. 【综合实训】图书管理系统——概要设计说明书
  7. CMMB 全国各地市频率规划表
  8. java nio 捕获异常_java nio channel抛出ClosedByInterruptException的情况
  9. java定时器表达式_Java Quartz表达式每分钟执行1次
  10. Vs2010中文版 使用 .net 3.5 时,智能提示英文变中文