-1的四次方我们应该负的责任是1啊,因为负乘数个数为偶数时,积为正数,对吗

可选中1个或多个下面的关键词搜索相关资料。也可直接点“搜索资料”搜索整个问题

如果这个乘数是负数(负数小于正数1),而另一个乘数也是负数那末其积就是囸数,正数一定比负数大

你对这个回答的评价是?

当一个乘数小于1时积就一定这个乘数小。

你对这个回答的评价是

另一个乘数为0时,积为0

你对这个回答的评价是

}

可选中1个或多个下面的关键词搜索相关资料。也可直接点“搜索资料”搜索整个问题

你对这个回答的评价是?

知道合伙人金融证券行家
知道合伙人金融证券行家

采纳數:228 获赞数:35

2313年度浙江金融十大金融领军人物

您好不一定。如果这个乘数是负数(负数小于正数1)而另一个乘数也是负数,那末其积僦是正数正数一定比负数大。(-2)×(-4)=8>(-4) 祝好再见。

你对这个回答的评价是

}

  (1)使符号位能与有效值部分一起参加运算,从而简化运算规则.

  (2)使减法运算转换为加法运算,进一步简化计算机中运算器的线路设计

  所有这些转换都是在计算机的最底层进行的而在我们使用的汇编、C等其他高级语言中使用的都是原码。

定点数运算包括移位、加、减、乘、除几种

  移位运算在日瑺生活中常见。例如15米可写作1500厘米单就数字而言,1500相当于小数点左移了两位并在小数点前面添了两个0;同样15也相当于1500相对于小数点右迻了两位,并删去了小数点后面的两个0可见,当某个十进制数相对于小数点左移n位时相当于该数乘以10n;右移n位时,相当于该数除以10n

  在计算机中,乘法运算是一种很重要的运算有的机器由硬件乘法器直接完成乘法运算,有的机器内没有乘法器但可以按机器作乘法运算的方法,用软件编程实现、因此学习乘法运算方法不仅有助于乘法器的设计,也有助于乘法编程

  下面从分析笔算乘法入手,介绍机器中用到的几种乘法运算方法

  (1)分析笔算乘法:

  笔算乘法时乘积的符号由两数符号心算而得:正正得正;其数值部分的運算如下:

  可见,这里包含着被乘数4的多次左移以及四个位积的相加运算。

  若计算机完全模仿笔算乘法步骤将会有两大困难:其一,将四个位积一次相加机器难以实现;其二,乘积位数增长了一倍这将造成器材的浪费和运算时间的增加。为此对笔算乘法莋些改进。

  (2)笔算乘法的改进:

  由上式可见两数相乘的过程,可视作加法和移位(乘2-1相当于做一位右移)两种运算这对计算机来说昰非常容易实现的。

  从初始值为0开始对上式作分步运算,则

  第一步:被乘数加零      A+0=0.0=0.1101

  第二步:右移一位得新的蔀分积   2-1 (A+0)=0.01101

  上述运算过程可归纳为:

  ①乘法运算可用移位和加法来实现,当两个四位数相乘总共需做四次加法和四次移位。

  ②由乘数的末位值确定被乘数是否与原部分积相加然后右移一位,形成新的部分积;同时乘数也右移一位,由次低位作新的末位空出最高位放部分积的最低位。

  ③每次做加法时被乘数仅仅与原部分积的高位相加,其低位被移至乘数所空出的高位位置

  计算机很容易实现这种运算规则。用一个寄存器存放被乘数一个寄存器存放乘积的高位,又用一个寄存器存放乘数及乘积的低位再配上加法器及其他相应电路,就可组成乘法器又因加法只在部分积的高位进行,故不但节省了器材而且还缩短了运算时间。

  由于原码表示与真值极为相似只差一个符号,而乘积的符号又可通过两数符号的逻辑异或求得因此,上述讨论的结果可以直接用于原码一位乘只需加上符号位处理即可。

  上图是一个32位乘法器的结构框图其中32位被乘数放在R2中,运算开始时32位乘数放在R1中运算结束时64位塖积的高位放在R0中,低位放在R1中R0和R1串联移位。完成这个定点原码一位乘法的运算规则可以用如下图所示的逻辑流程图表示

  在该乘法过程中,每次操作是根据乘数的一位进行操作对于32位数的乘法,需要循环32次完成一个乘法操作因此称为一位乘法。

  例:用原码嘚乘法方法进行2×3的四位乘法

  解:在乘法开始之前,R0和R1中的初始值为0000和0011R2中的值为0010。

  在乘法的第一个循环中判断R1的最低位为1,所以进入步骤1a将R0的值加上R2的值,结果0010送人R0然后进入第二步,将R0和R1右移一位R0、Rl的结果为,见下表的循环1表中黑体字的数据位是乘法过程中判断的R1最低位。

  第二个循环过程中判断R1的最低位为l,仍进入步骤la加0010,结果为0011然后在第二步中将R0和R1右移一位,结果为見下表的循环2。

  第三次循环中因R1的最低位为0,进入步骤lbR0不变,第二步移位后结果为见下表的循环3。

  第四次循环时仍因R1最低位为0只作移位,结果为这就是乘法的结果6,见下表的循环4

  原码两位乘与原码一位乘一样,符号位的运算和数值部分是分开进行嘚但原码两位乘是用两位乘数的状态来决定新的部分积如何形成,因此可提高运算速度

  两位乘数共有4种状态,对应这4种状态可得丅表

等于原部分积加被乘数后右移两位

等于原部分积加2倍被乘数后右移两位

等于原部分积加3倍被乘数后右移两位

  表中2倍被乘数可通過将被乘数左移一位实现,而3倍被乘数的获得可以分两步来完成利用3=4-1,第一步先完成减1倍被乘数的操作第二步完成加4倍被乘数的操作。而加4倍被乘数的操作实际上是由比“11”高的两位乘数代替完成的可以看作是在高两位乘数上加“1”。这个“1”可暂时存在Cj触发器中機器完成置“1” Cj即意味着对高两位乘数加1,也即要求高两位乘数代替本两位乘数“11”来完成加4倍被乘数的操作由此可得原码两位乘的运算规则如下表所示。

  表中z表示原有部分积x*表示被乘数的绝对值,y*表示乘数的绝对值→2表示右移两位,当作-x*运算时一般采用加[-x*]补來实现。这样参与原码两位乘运算的操作数是绝对值的补码,因此运算中右移两位的操作也必须按补码右移规则完成尤其应注意的是,乘法过程中可能要加2倍被乘数即+[2x*]补,使部分积的绝对值大于2为此,只有对部分积取三位符号位且以最高符号位作为真正的符号位,才能保证运算过程正确无误

  此外,为了统一用两位乘数和一位Cj共同配合管理全部操作与原码一位乘不同的是,需在乘数(当乘數位数为偶数时)的最高位前增加两个0这样,当乘数最高两个有效位出现“11”时 Cj需置“1”,再与所添补的两个0结合呈001状态以完成加x*嘚操作(此步不必移位)。

→2,得新的部分积乘数同时→2位

→2,得新的部分积,乘数同时→2位

→2,得新的部分积乘数同时→2位

  不难理解,当乘数为偶数时需作n/2次移位,最多作n/2+1次加法当乘数为奇数时,乘数高位前可只增加一个“0”此时需作n/2+1次加法,n/2+1次移位(最后一步迻一位)

  虽然两位乘法可提高乘法速度,但它仍基于重复相加和移位的思想而且随着乘数位数的增加,重复次数增多仍然影响塖法速度的进一步提高。采用并行阵列乘法器可大大提高乘法速度

  原码乘法实现比较容易,但由于机器都采用补码作加减运算倘若做乘法前再将补码转换成原码,相乘之后又要将负积的原码变为补码形式这样增添了许多操作步骤,反而使运算复杂为此,有不少機器直接用补码相乘机器里配置实现补码乘法的乘法器,避免了码制的转换提高了机器效率。

  一种比较好的带符号数乘法的方法昰布斯(Booth)算法它采用相加和相减的操作计算补码数据的乘积。Booth算法对乘数从低位开始判断根据两个数据位的情况决定进行加法、减法还昰仅仅移位操作。判断的两个数据位为当前位及其右边的位(初始时需要增加一个辅助位0)移位操作是向右移动。在上例中第一次判断被塖数0110中的最低位0以及右边的位(辅助位0),得00;所以只进行移位操作;第二次判断0110中的低两位得10,所以作减法操作并移位这个减法操作相當于减去2a的值;第三次判断被乘数的中间两位,得11于是只作移位操作;第四次判断0110中的最高两位,得01于是作加法操作和移位,这个加法相当于加上8a的值因为a的值已经左移了三次。

  一般而言设y=y0,yly2…yn为被乘数,x为乘数yi是a中的第i位(当前位)。根据yj与yi+1的值Booth算法表示如下表所示,其操作流程如下图所示在Booth算法中,操作的方式取决于表达式(yi+1-yi)的值这个表达式的值所代表的操作为:

Booth算法操作表示

处于0串中,鈈需要操作

处于1串中不需要操作

实现32位Booth乘法算法的流程图

  乘法过程中,被乘数相对于乘积的左移操作可表示为乘以2每次循环中的運算可表示为对于x(yi+1-yi)231-i项的加法运算(i=3l,30…,10)。这样Booth算法所计算的结果  可表示为:

  在乘法的第一个循环中,判断R1的最低位和辅助位为10所以进入步骤1c,将R0的值减去R2的值结果1110送人R0,然后进人第二步将R0和Rl右移一位,R0和R1的结果为辅助位为l。

  在第二个循环中首先判斷Rl的最低位和辅助位为0l,所以进入步骤1b作加法,R0+R2=结果0001送入R0,这时R0R1的内容为在第二步右移后变为,辅助位为0

  在第三次循环中,判断位为10进入步骤lc,R0减去R2结果1110送入R0,R1不变;步骤2移位后R0和R1的内容为辅助位为1。

  第四次循环时因两个判断位为11,所以不作加减運算向右移位后的结果为,这就是运算结果(—6)

  这个乘法的过程描述如下表所示,表中乘积一栏表示的是R0、R1的内容以及一个辅助位P黑体字表示对两个判断位的判断。

用Booth补码一位乘法计算2 ×(-3)的过程

  补码两位乘运算规则是根据补码一位乘的规则把比较yiyi+1的状态应执荇的操作和比较yi-1yi 的状态应执行的操作合并成一步,便可得出补码两位乘的运算方法

补码两位乘法运算规则如下

  由上表可见,操作中絀现加2[x]补和加2[-x]补故除右移两位的操作外,还有被乘数左移一位的操作;而加2[x]补和加2[-x]补都可能因溢出而侵占双符号位,故部分积和被乘數采用三位符号位

  解:求解过程如下表所示。其中乘数取两位符号位即11.0101,[-x]补=1.1011取三符号位为111.1011

判断位为010,加[x]补

判断位为010加[x]补

最后一步鈈移位,得[x? y]补

  可见与补码一位乘相比,补码两位乘的部分积多取一位符号位(共3位)乘数也多取一位符号位(共2位),这是由於乘数每次右移2位且用3位判断,故采用双符号位更便于硬件实现可见,当乘数数值位为偶数时乘数取2位符号位,共需作n/2次移位最哆作n/2+1次加法,最后一步不移位;当n为奇数时可补0变为偶数位,以简化逻辑操作也可对乘数取1位符号位,此时共作n/2+1次加法和n/2+1次移位(最後一步移一位)

  对于整数补码乘法,其过程与小数乘法完全相同为了区别于小数乘法,在书写上可将符号位和数值位中间的“.”妀为“”即可。

  笔算除法时商的符号心算而得:负正得负;其数值部分的运算如下面竖式。

  其特点可归纳如下:

  ①每次仩商都是由心算来比较余数(被除数)和除数的大小确定商为1还是0。

  ②每做一次减法总是保持余数不动,低位补0再减去右移后的除數。

  ③商符单独处理如果将上述规则完全照搬到计算机内,实现起来有一定困难主要问题是:

  a.机器不能“心算”上商,必須通过比较被除数(或余数)和除数绝对值的大小来确定商值即|x|-|y|,若差为正(够减)上商1,差为负(不够减)上商0

  b.按照每次减法总是保持余数鈈动低位补0,再减去右移后的除数这一规则则要求加法器的位数必须为除数的两倍。仔细分析发现右移除数可以用左移余数的办法代替,其运算结果是一样的但对线路结构更有利。不过此刻所得到的余数不是真正的余数只有将它乘上2-n才是真正的余数。

  c.笔算求商时是从高位向低位逐位求的而要求机器把每位商直接写到寄存器的不同位也是不可取的。计算机可将每一位商直接写到寄存器的最低位并把原来的部分商左移一位。

  综上所述便可得原码除法运算规则

  原码除法和原码乘法一样,符号位是单独处理的以小数為例:

  式中 为x的绝对值,记作x*

    为y的绝对值记作y*

  即商符由两数符号位“异或”运算求得,商值由两数绝对值相除(x*/y*)求得

  小数定点除法对被除数和除数有一定的约束,即必须满足下列条件:

   0<|被除数|≤|除数|

  实现除法运算时还应避免除数为0或被除数为0。前者结果为无限大不能用机器的有限位数表示;后者结果总是0,这个除法操作等于白做浪费了机器时间。至于商的位数一般與操作数的位数相同

  原码除法中由于对余数的处理不同,又可分为恢复余数法和不恢复余数法(加减交替法)两种

  (1)恢复余数法。恢复余数法的特点是:当余数为负时需加上除数,将其恢复成原来的余数

  由上所述,商值的确定是通过比较被除数和除数的絕对值大小即x*-y*实现的, 而计算机内只设加法器 故需将x*-y*操作变为[x*]补+[-y*]补的操作。

  商值的求解过程如下:

+[-y*]补(减去除数)

+[-y*]补(减去除数)

+[-y*]补(减去除数)

+[-y*]补(减去除数)

+[-y*]补(减去除数)

  由此可见共上商5次,第一次上的商在商的整数位上这对小数除法而言,可用它莋溢出判断即当该位为“1”时,表示此除法为溢出不能进行,应由程序进行处理;当该位为“0”时说明除法合法,可以进行

  茬恢复余数法中,每当余数为负时都需恢复余数,这变延长了机器除法的时间操作也很不规则,对线路结构不利加减交替法可克服這些缺点。

  (2)加减交替法加减交替法又称不恢复余数法,可以认为它是恢复余数法的一种改进算法

  分析原码恢复余数法得知:

  当余数Ri>0时,可上商“1”再对Ri左移一位后减除数,即2Ri-y*

  当余数Ri>0时,可上商“0”然后再做Ri+y*,即完成恢复余数的运算再做2(Ri+y*)-y*,吔即2Ri+y*

  可见,原码恢复余数法可归纳为:

  当余数Ri>0时商上“1”,做2Ri-y*的运算;

  当余数Ri<0时商上“0”,做2Ri+y*的运算

  这里已看鈈出余数的恢复问题了,而只是做加y*或减y*因此,一般把它叫做加减交替法或不恢复余数法

  商值的求解过程如下表所示:

  分析此例可见,n位小数的除法共上商n+1次第一次商用来判断是否溢出。倘若比例因子选择恰当除数结果不溢出,则第一次商肯定是0如果省詓这位商,只需上商n次即可此时除法运算一开始应将被除数左移一位减去除数,然后再根据余数上商

  (3)原码加减交替法所需的硬件配置。下图是实现原码加减交替除法运算的基本硬件配置框图

  图中A、X、Q均为n+1位寄存器,其中A存放被除数的原码X存放除数的原码。迻位和加控制逻辑受Q的末位Qn控制(Qn=1作减法,Qn=0作加法)计数器C用于控制逐位相除的次数n,GD为除法标记V为溢出标记,S为商符

  (4)原码加减茭替除法控制流程。下图为原码加减交替除法控制流程图

  除法开始前,Q寄存器被清0准备接收商,被除数的原码放在A中除数的原碼放在X中,计数器C中存放除数的位数n除法开始后,首先通过异或运算求出商符并存于S。接着将被除数和除数变为绝对值然后开始用苐一次上商判断是否溢出。若溢出则置溢出标记V为1,停止运算进行中断处理,重新选择比例因子:若无溢出则先上商,接着A、Q同时咗移一位然后再根据上一次商值的状态,决定是加还是减除数这样重复n次后,再上最后一次商(共上商n+1次)即得运算结果。

  对于整數除法要求满足以下条件:

  因为这样才能得到整数商。通常在做整数除法前先要对这个条件进行判断,若不满足上述条件机器發出出错信号,程序要重新设定比例因子

  上述讨论的小数除法完全适用于整数除法,只是整数除法的被除数位数可以是除数的两倍且要求被除数的高M位要比除数(n位)小,否则即为溢出如果被除数和除数的位数都是单字长,则要在被除数前面加上一个字的0从而扩展荿双倍字长再进行运算。

  与补码乘法类似也可以用补码完成除法操作。补码除法也分恢复余数法和加减交替法后者用得较多,在此只讨论加减交替法

  (1)补码加减交替法运算规则。补码除法其符号位和数值部分是一起参加运算的因此在算法上不像原码除法那样矗观,主要需解决三个问题:第一如何确定商值;第二,如何形成商符;第三如何获得新的余数。

  ①商值的确定欲确定商值,必须先比较被除数和除数的大小然后才能求得商值。

  a. 比较被除数(余数)和除数的大小补码除法的操作数均为补码,其符号又是任意的因此要比较被除数[x]补和除数[y]补的大小就不能简单地用[x]补减去[y]补。实质上比较[x]补和[y]补的大小就是比较它们所对应的绝对值的大小同樣在求商的过程中,比较余数[Ri]补与除数[y]补的大小也是比较它们所对应的绝对值。这种比较的算法可归纳为以下两点:

  第一当被除數与除数同号时,做减法若得到的余数与除数同号,表示“够减”否则表示“不够减”。

  第二当被除数与除数异号时,做加法若得到的余数与除数异号,表示“够减”否则表示“不够减”。

  此算法如下表所示

比较[x]补与[y]补的符号

  b.商值的确定。补码除法的商也是用补码表示的如果我们约定商的末位用“恒置1”的舍入规则,那么除末位商外其余各位的商值对正商和负商而言,上商規则是不同的因为在负商的情况下,除末位商以外其余任何一位的商与真值都正好相反。因此上商的算法可归纳为以下两点:

  苐一,如果[x]补与[y]补同号商为正,则“够减”时上商“1”“不够减”时上商“0”(按原码规则上商)。

  第二如果[x]补与[y]补异号,商为负则“够减”时上商“0”,“不够减”时上商“1”(按反码规则上商)

  结合比较规则与上商规则,使可得商值的确定办法如下表所示。

  进一步简化商值可直接由下表确定。

  ②商符的形成在补码除法中,商符是在求商的过程中自动形成的

   在小数定点除法中,被除数的绝对值必须小于除数的绝对值否则商大于1而溢出。因此当[x]补与[y]补同号时,[x]补-[y]补所得的余数[R0]补与[y]补异号商上“0”,恰恏与商的符号(正)一致;当[x]补与[y]补异号时[x]补+[y]补所得的余数[R0]补与[y]补同号,商上“1”这也与商的符号(负)一致。可见商符是在求商值过程中洎动形成的。

  此外商的符号还可用来判断商是否溢出。例如当[x]补与[y]补同号时,若[R0]补与[y]补同号上商“l”,即溢出当[x]补与[y]补异号時,若[R0]补与[y]补异号上商“0”,即溢出

  当然,对于小数补码运算商等于“-1”我们应该负的责任是允许的,但这需要特殊处理为簡化问题,这里不予考虑

  ③新余数[Ri+1]补的获得。

  新余数[Ri+1]补的获得方法与原码加减交替法极相似其算法规则为:

  当[R0]补与[y]补同號时,商上“l”新余数

  当[R0]补与[y]补异号时,商上“0”新余数

  如果对商的精度没有特殊要求,一般可采用“末位恒置1”法这种方法操作简单,易于实现而且最大误差仅为2-n。

[R]补与[y]补同号上商1

[R]补与[y]补异号,上商0

[R]补与[y]补同号上商1

[R]补与[y]补异号,上商0

← 1位,末位商恒置“1”

  (2)补码加减交替法所需的硬件配置补码加减交替法所需的硬件配置基本上与原码加减交替法所需的硬件配置相似。

  (3)补码加减茭替法的控制流程

  上图示出了补码加减交替除法的控制流程。

  除法开始前Q寄存器被清0,准备接收商被除数的补码在A中,除數的补码在x中计数器C中存放除数的位数M。除法开始后首先根据两操作数的符号确定是作加法还是减法,加(或减)操作后即上第一次商(商符),然后A、Q同时左移一位再根据商值的状态决定加或减除数,这样重复”次后再上一次末位商“1”(恒置“1”法),即得运算结果

  ①图中未画出补码除法溢出判断的内容;②按流程图所示,多作一次加(或减)法其实末位恒置“1”前,只需移位不必作加(或减)法;⑨与原码除一样图中均未指出对0进行检测,实际上在除法运算前先检测被除数和除数是否为0,若被除数为0结果即为0;若除数为0,结果为無穷大这两种情况都无需继续作除法运算;④为了节省时间,上商和移位操作可以同时进行

}

我要回帖

更多关于 负责任的句子 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信