概念:
       比较好的带符号数乘法的方法是布斯(Booth)算法。它采用相加和相减的操作计算补码数据的乘积。Booth算法对乘数从低位开始判断,根据两个数据位的情况决定进行加法、减法还是仅仅移位操作。判断的两个数据位为当前位及其右边的位(初始时需要增加一个辅助位0),移位操作是向右移动。

其中booth算法在操作时,需要遵循一个操作表:

具体步骤如下:

  1. 被乘数X与乘数Y均以补码的形式参加乘法运算,运算结果是积的补码。
  2. 部分积和被乘数X采用双符号位,乘数Y采用单符号位。
  3. 初始部分积为0,。运算前,在乘数Y的补码末位添加一位附加位Yn+1,初始值为0.
  4. 根据YnYn+1的值,按照上表进行累加右移操作,右移时遵循补码的移位规则。
  5. 累加n+1次,右移n次,最后一次不右移

这里我举一个例子:

任何有疑问的请留言,我会改进,谢谢。

参考书籍:《计算机组成原理与系统结构–包键》

一个关于Booth算法的文章相关推荐

  1. Booth算法在局域网监控软件中运用的一个例子

    Booth算法是一种高效的二进制乘法算法,可用于在局域网监控软件中进行IP地址的匹配和查找.局域网监控软件通常需要对多台计算机进行监控和管理,而这些计算机的IP地址是关键的识别信息.使用Booth算法 ...

  2. bagging算法_集成算法——三个“臭皮匠”级算法优于一个“诸葛亮”级算法

    最近在打算法竞赛的时候用到了集成算法,效果还不错,索性就总结了一篇集成算法的文章,希望能帮到正在转行的数据分析师们.集成算法核心思想集成算法的核心思想是通过构建并结合多个学习器来完成学习任务,也就是通 ...

  3. 如何成为一个合格的算法工程师?这对你来说也许并不是很困难

    基础 算法.数据结构 这俩是基础中的基础,作为一个合格的算法工程师,你可以写不出来红黑树,也可以不懂网络流,但是最基础的排序.递归.动态规划.树.堆栈.队列等算法和数据结构是一定要会的,并且还需要有一 ...

  4. booth算法实现乘法器

    booth算法充分的利用到了补码的重要性,使得我们在利用补码进行计算时减少了很多时序.下面的表格是我们假设2 作为乘数所进行的分析.接下来,我将用代码向大家阐述. 1.开始的时候在乘数2的'负一位'加 ...

  5. 子集和与一个整数相等算法_背包问题的一个变体:如何解决Java中的分区相等子集和问题...

    子集和与一个整数相等算法 by Fabian Terh 由Fabian Terh Previously, I wrote about solving the Knapsack Problem (KP) ...

  6. 如何学习数据结构和算法——大佬文章汇总

    第一篇 第二篇. 作者:左程云 我分别说一下国内和国外的行情. 国内的话,一般来讲,工资高的公司在面试时算法和数据结构题目的比重较大,工资一般的公司比重较小.当然同样公司的不同岗位,要求也会不同,但总 ...

  7. 加减法、原码一位乘法、Booth算法、恢复余数法、加减交替法符号位及小结

    在学习计算机组成原理的计算方法时,或为步骤疑惑,或为题目难倒,本文主要介绍思路以及对常用类型小结 个人总结,仅供参考,能力有限,难免出错,欢迎大家讨论,书籍参考唐朔飞版<计算机组成原理> ...

  8. python算法工程师需要学什么_一个优秀的算法工程师必须具备哪些素质?

    导言 怎样成为一名优秀的算法工程师?这是很多从事人工智能学术研究和产品研发的同学都关心的一个问题.面对市场对人才的大量需求与供给的严重不足,以及高薪水的诱惑,越来越多的人开始学习这个方向的技术,或者打 ...

  9. 一个基于RSA算法的Java数字签名例子

    ====================================================== 注:本文源代码点此下载 ================================= ...

  10. 《跟我学算法系列文章——一文学会数据结构套路》

    <一文学会数据结构套路> 关键词:数据结构 LRU Tree 文章目录 <一文学会数据结构套路> 前言 3.1 手写 LRU 算法 一.LRU 算法描述 二.LRU 算法设计 ...

最新文章

  1. poj1410(线段相交问题判断)
  2. 接口测试用例设计思路_用了Swagger2后,接口设计文档,测试用例都不用自己写了,爽...
  3. linux read函数_Linux中shell输入ls命令后会系统会发生什么
  4. Parallels高危漏洞的奇葩修复指南
  5. datatable里添加一个标识列
  6. oracle clob 次数,解决Oracle clob字段数据过大问题
  7. GDCM:读取和转储DICOMDIR文件的测试程序
  8. matlab逆变换法产生随机数_matlab数值积分方法(一)
  9. 解决android中Layout文件下的xml文件配好后,R类中不能自动生成相应代码
  10. 【小技巧】【Java】 创建指定数目m的Set数组
  11. 【转】linx 设备名字来由 sd sr sg st
  12. caffe loss层
  13. jqgrid使用小记
  14. mysql can't open file: '..frm'_mysqldump 导出数据时出现can’t opne file ‘xx.frm’ (errno:24)错误...
  15. 使用ResourceBundle读取配置文件
  16. 游戏开发之STL库的基础使用(string、vector、list、map、unordered_map)(C++基础)
  17. router阻止telnet自身的两种方法
  18. VC操作word绘制表格
  19. 微信小程序学习记录——4.框架-视图层
  20. C#控件开发---控件属性编辑器

热门文章

  1. 杰理之如果再开蓝牙一拖二的话。手机连接样机时,会出现,无法连接【篇】
  2. 写刀路的一些经验[分享] 铜公加工方法及注意事项
  3. 图像导入裁剪与灰度化
  4. 创意字体设计中主题类别有哪些呢?
  5. java概述及我的第一个java项目
  6. 基于51单片机流水灯仿真与程序设计
  7. 二维向量叉积的几何意义
  8. 阿里本地生活电话面试
  9. 51单片机实战教程基础硬件篇(三 51单片机开发板设计)
  10. 普中51单片机数码管实例