BOOTH 算法的简单理解

学习FPGA时,对于乘法的运算,尤其是对于有符号的乘法运算,也许最熟悉不过的就是 BOOTH算法了。

这里讲解一下BOOTH算法的计算过程,方便大家对BOOTH的理解。

       上图是BOOTH算法的数学表达。由于FPGA擅长进行并行移位计算,所以BOOTH算法倒也好实现。

上图是对乘数的加码过程,具体可以见下面的例子。

7 x (-3),其中R1表示被乘数 7, R2 表示乘数 -3,那么二者对应的补码,为 R1 0111,R2 1101,

P代码最终结果容量,应该为 2x 4 + 1 = 9位,其中一位作为辅助位。计算过程如下:

上述的计算过程需要注意,在进行右移时,需要将P = {R0,R2},当作整体看待,若P[8]最高位为0,则

移位之后的结果R0的最高位就补0,若是1就补1,由上图的第7步到第8步的变换,{R0,R2} =

{1001,,0001},那么P的最高位是1,则以后之后,R0的高位需要补1,所以得到移位之后的结果{R0,R2} =

{1100,1000},并且辅助位由于乘数的低位是1,所以辅助位为1,辅助位和乘数的移调的位的逻辑值有关,比

如乘数是0010,则四次操作的辅助为 0, 1, 0, 0。

时间: 2024-10-14 08:02:44

BOOTH 算法的简单理解的相关文章

快速排序算法的简单理解

快速排序算法的简单理解 本文用的编程语言为python,简单阐释了作者对快速排序算法的学习心得,尽量用通俗易懂的方式向读者表达.如果文章中有什么纰漏与错误,请读者指正. 在了解快速排序之前,我们先来了解一下递归 递归 递归调用自己的函数 先来看一个函数 def (i): print(i) countdown(i-1) 这是一个不断递减的函数,如果调用这个函数,它会无限循环下去.这可不是一件好事.我们应该给予它一些限制,告诉它什么时候停止调用自己,什么时候调用自己.我们把这种限制分别叫做基线条件与

关于Dijkstra 和 Bellman-ford算法的简单理解

两个算法都是跟求图的有源最短路径有关.Dijkstra主要针对的是无负权值节点的图,而Bellman-Ford算法则是可以处理有负权值的有向图的最短路径问题.两者都用到了一个"松弛计算"的方法,也就是在遍历图的顶点和边的过程中修改距离数组的值,从而来找出最短路径. Dijkstra算法针对无负权值的图,求源点到某特定点的最短距离.大概的思路是: 将图的顶点分成两个集合S,V.S中开始时只有源点,而V中是剩下的点.有一个dis[n](n为图的节点数)的数组来记录每一个点到源点的特殊距离,

【机器学习算法-python实现】采样算法的简单实现

1.背景 采样算法是机器学习中比较常用,也比较容易实现的(出去分层采样).常用的采样算法有以下几种(来自百度知道): 一.单纯随机抽样(simple random sampling) 将调查总体全部观察单位编号,再用抽签法或随机数字表随机抽取部分观察单位组成样本. 优点:操作简单,均数.率及相应的标准误计算简单. 缺点:总体较大时,难以一一编号. 二.系统抽样(systematic sampling) 又称机械抽样.等距抽样,即先将总体的观察单位按某一顺序号分成n个部分,再从第一部分随机抽取第k

回溯法之八皇后问题简单理解

回溯法,简单理解就是有源可溯.基本思想要借鉴穷举法,但是它不是一味地穷举,当发现某一步不符合条件时,这一步后面的穷举操作就不进行了(俗称“剪枝”),我自己把它叫做动态穷举法.假设第一个步骤可行,那么执行第二个步骤,第三个......如果其中第三个步骤不行,那么我们再回过来(回溯),第二个步骤换一种方法尝试,然后再重新第三个步骤,第四个......直到完成任务要求为止. 这里,以八皇后问题为例.试图把回溯法讲清楚. 注意:递归应该是一种算法结构,回溯法是一种算法思想. 何为八皇后问题? (百度百科

[转] A*寻路算法C++简单实现

参考文章: http://www.policyalmanac.org/games/aStarTutorial.htm   这是英文原文<A*入门>,最经典的讲解,有demo演示 http://www.cnblogs.com/technology/archive/2011/05/26/2058842.html  这是国人翻译后整理的简版,有简单代码demo,不过有些错误,讲得很清晰,本文图片来自这篇 http://blog.csdn.net/b2b160/article/details/4057

机器学习&amp;数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理)

http://www.cnblogs.com/tornadomeet/p/3395593.html 机器学习&数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理) 前言: 找工作时(IT行业),除了常见的软件开发以外,机器学习岗位也可以当作是一个选择,不少计算机方向的研究生都会接触这个,如果你的研究方向是机器学习/数据挖掘之类,且又对其非常感兴趣的话,可以考虑考虑该岗位,毕竟在机器智能没达到人类水平之前,机器学习可以作为一种重要手段,而随着科技的不断发展,相信这方面的人才需求也会越来越大.

分布式理论之一:Paxos算法的通俗理解

维基的简介:Paxos算法是莱斯利·兰伯特(Leslie Lamport,就是 LaTeX 中的"La",此人现在在微软研究院)于1990年提出的一种基于消息传递且具有高度容错特性的一致性算法. Paxos算法目前在Google的Chubby.MegaStore.Spanner等系统中得到了应用,Hadoop中的ZooKeeper也使用了Paxos算法,在上面的各个系统中,使用的算法与Lamport提出的原始Paxos并不完全一样,这个以后再慢慢分析.本博文的目的是,如何让一个小白在半

大话设计模式总结(28种设计模式定义+简单理解)

大话设计模式这本书写的非常有创意,非常适合我这种新手.用了大约两个星期的时间看完了这本书,代码全部都敲了一遍,虽然没有一点基础,但是还是领略到了面向对象的威力.看完之后再也不想使用面向过程的语言了,比如VB,想当初我也是VB狂热者,但是现在我几乎不想再使用了.现在只想着写点什么用上它几种设计模式. 可能是第一次接触这些东西,有些感觉看懂了,但是很难应用到实际编程中:有些感觉没看懂,但是还能说出那么点东西来.听七期学长说他们当初看了两遍,要求能背着写出代码,不知道这次我们八期要求怎么这么低,我只看

关于分治算法的个人理解

关于分治算法的个人理解: 把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题--直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并. 以快速排序为例,先取一个参数.将大于该参数的值放在右边,小于该参数的值放在左边,使该参数处于最正确的位置上. 该案例的基本思想:是将该数组排序问题分成为该数组中的数值与选取的参数值比较大小.即简单的一对一的比较问题. 该比较问题相互独立.具有最优子结构性质,且可以合并. 1.快速排序 public class Test{ p