计算机组成原理——补码一位乘(Booth算法)+举例+小白理解

计算机组成原理——补码一位乘(Booth算法)+举例+小白理解题外话 2018 年高三毕业 想都没想过自己会成为一名程序员 但是既然选择了就坚定的走下去吧 在学校的时候都是用笔记记录自己的学习过程 没想到 2020 的开头不是那么完美 现在要在家上网课啦 突发奇想想把自己学到的知识分享给大家 希望像我这样的小白也能够找到适合自己的学习方法啊 最后一句啊 我们一起加油 2020 会好起来的 布斯算法上周学习计算机组成原理这门课 讲到了布斯算法 不知

题外话

   2018年高三毕业,想都没想过自己会成为一名程序员,但是既然选择了就坚定的走下去吧。在学校的时候都是用笔记记录自己的学习过程,没想到2020的开头不是那么完美,现在要在家上网课啦,突发奇想想把自己学到的知识分享给大家,希望像我这样的小白也能够找到适合自己的学习方法啊。最后一句啊,我们一起加油,2020会好起来的!

布斯算法

  上周学习计算机组成原理这门课,讲到了布斯算法,不知道是不是由于网课的原因,总觉得自己没有很懂布斯算法,课下又查找了很多资料,但是大多数的文章描述都还是有些晦涩难懂,经过自己的一番理解,希望能够给像我这样的小白一些不一样的理解方法。

   步入正题

在举例之前,先大概说一下布斯算法计算的规则:

1.如果当前的乘数位是1,前面的乘数位是0, 则从乘积中减去被乘数;

2.如果当前的乘数位是0,前面的乘数位是1,则从乘积中加上被乘数;

3.如果当前的乘数位是0/1,前面的乘数位也是0/1,即出现00/11对,那么我们直接进行移位操作,就是将当前的乘数位变成高位的乘数位;

4.我们一定要把乘数和被乘数补成相同的二进制位数表示,下面有具体解释哦;

5.虚构一个0开头,就是在最低位的后面添加一个0,作为最低位的前面的乘数位;

6.完成4后,这时我们知道乘数和被乘数的二进制表示位数如0011,位数就是4,那么如果计算结果超过2n(n)为二进制表示位数,那么我们将2n高位的其他位省略。

可能你看到这里就觉得这是个啥,我还是不明白,不要着急。一定要往下看例子哦,一定可以明白的。

  无符号整数的布斯算法

假设X = 5;Y = 3,那么求X * Y。

我们将X用二进制表示为101,Y表示为11,这时我们发现X与Y用二进制表示的位数不同,也就是说X是3位,Y是2位,这是我们会碰到的第一个问题,那就是把乘数和被乘数的二进制表示补成相同的位数,记住是在高位补0哦,因为是无符号整数,因此就可以看成是正数的,所以高位补0。那X为101,Y为011,接下来开始计算两者的乘积,图片举例哦:

计算机组成原理——补码一位乘(Booth算法)+举例+小白理解

可能有些姐妹不理解我图中最后计算的时候用圈圈出来的那一列为什么要补上去,这就涉及到另一个容易遗忘的点啦,那就是要把第一个计算得到的补位到2n,原理我觉得我可能描述不太明白,大家有疑惑可以去看一下慕课里面电子科技大学纪禄平、罗克露、刘辉、张建、廖建明老师的计算机组成原理,里面也有关于布斯算法计算机中的计算过程,我觉得讲的还是比较明白的,嘿嘿~

无符号整数就说到这里啊~

有符号整数的布斯算法:

有符号整数的布斯算法其实跟上面的差不多,我们主要需要区分的就是最高位是符号位,就是因为原码一位乘无法解决[XY]的补等于X的补乘以Y的补,因此我们用补码一位乘的方法来解决这个问题,举例如下:

计算机组成原理——补码一位乘(Booth算法)+举例+小白理解

这里大家可能还有疑惑的就是小数的计算了,下面看一下这个例子就会明白啦,其实原理都是相同的啊,记得最后加上小数点就行了,跟整数的乘法是一样的哦

计算机组成原理——补码一位乘(Booth算法)+举例+小白理解

写的有一点点挤了,大家见谅啊,发现写完这篇文章,自己对布斯算法的理解也更加深刻了,除了上文中给大家推荐的慕课外,我也看到了一篇文章写的极好,推荐给大家,网址为https://www.cnblogs.com/xisheng/p/9260861.html(如有侵权,请联系我删除哦)

结束语

好啦,第一篇文章就到此结束啦,希望能够帮到大家,以后我也会把自己遇到的一些问题发布在这里的,希望大家会喜欢啊,加油!

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/207307.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午2:06
下一篇 2026年3月19日 下午2:06


相关推荐

  • SpringBoot常见面试问题

    SpringBoot常见面试问题博客转载自:https://blog.csdn.net/ityouknow/article/details/96533522随着SpringBoot使用越来越广泛,SpringBoot已经成为Java程序员面试的知识点,很多同学对SpringBoot理解不是那么深刻,经常就会被几个连环跑给干趴下了!比如下面这一段的SpringBoot问答:问:你觉得S…

    2022年6月4日
    42
  • 史上最简单的SpringCloud教程 | 第三篇: 服务消费者(Feign)

    史上最简单的SpringCloud教程 | 第三篇: 服务消费者(Feign)原文地址:https://blog.csdn.net/forezp/article/details/69808079上一篇文章,讲述了如何通过RestTemplate+Ribbon去消费服务,这篇文章主要讲述如何通过Feign去消费服务。一、Feign简介Feign是一个声明式的伪Http客户端,它使得写Http客户端变得更简单。使用Feign,只需要创建一个接口并注解。它具有可插拔的注解特性,可…

    2022年6月25日
    29
  • rpm卸载软件包时报依赖错误

    rpm卸载软件包时报依赖错误如下图所示:解决办法:加上–nodeps参数

    2026年2月13日
    4
  • staruml如何使用(一览)

    需求工程课里面老师让我们使用一个软件进行图形绘制:StarUML(简称SU),是一种创建UML类图,生成类图和其他类型的统一建模语言(UML)图表的工具。StarUML是一个开源项目之一发展快、灵活、可扩展性强(zj).StarUML官方下载地址:http://staruml.io/download安装教程:安装步骤很简单,省略。注意:付费软件,如需破解网上很多教程,不破解不影响使用安装之后的主界面简介如图所示:2.创建工程在启动starUML时,系统会默认帮我们创建一个工程如果这个

    2022年4月12日
    227
  • Vue a标签在新窗口打开路由

    Vue a标签在新窗口打开路由a click isService 我已阅读并同意 用户协议 isService letrouteData this router resolve name AffiliatedPr window open routeData href blank a click isService

    2026年3月16日
    1
  • java三目运算符判断三个值_双目运算符只有一个目

    java三目运算符判断三个值_双目运算符只有一个目使用三目运算符重构业务代码,测试的时候发生了NPE的问题。重构代码非常简单,代码如下://方法返回参数类型为Integer//privateIntegercode;SimpleObjsimpleObj=newSimpleObj();//其他业务逻辑if(simpleObj==null){return-1;}else{returnsimpleObj.getC…

    2025年7月21日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号