罗泽兵 发表于 2024-4-15 08:55:52

12.第12节课第二章数据的表示和运算

同学们大家好,我们看完了,咱们定点式的加减法运算以及它的溢出判断之后。我们来学习第三小块内容是定点数的乘法运算。那么,我们首先来看一下。那么,我们首先来看一下。嗯,分怎样去分析笔算的乘法啊?给出两个数,两个二进制数a和b一个正的一个负的,我们怎么样去计算出它的乘法结果?啊,我们首先先不看符号位,

先把它的数值部分进行一个乘法。必须得。用第一位第一位的一乘数和被乘数啊,第一位的一乘以上面的。a得到一乘以上面c得到的是还是一的,值得到的是一零一。再往后,我们用第二位一。去乘以。呃乘以a得到的还是一的,原来的值用第三位零去乘以a×a之后得到的是是一个零啊,在我们最后最高一位一去乘以a。得到的是b的值a的值,这样的话,我们做一个加法运算就会得出咱们的a×b。

不带符号位的a×b数值部分的一个结果啊,我们可以看到结果乘以b我们,再加上它的符号位之后等于的负的零点一零零零一一一。这是我们得出的。a×b的乘法的结果,我们可以看到,在这个运算的过程当中,咱们的符号位是进行了一个单独的处理。乘数的某一位决定其是否加被乘数,我们把乘数和被乘数相乘得到结果它。的乘数的某一位就是b的某一位啊。决定了是否加倍乘数,如果是b的位置上,它的值数值是零的话,那我们得到的结果是一个零啊,

如果是一的话,我们得到的结果是。a的值是a的值,那这样的话,我们进行一个求和进行一个求和的过程,我们可以看到。我们在实际的十进制的乘法当中啊,和咱们在二进制的乘法当中的运算是一样的。嗯,但是咱们二进制乘法运算相比十进制乘法运算要简单一些,因为它的数值只有零和一这两部分。啊乘以一那就是呃乘被乘数的一个原来的值啊乘以零的话就是一个零,那可以合作一个加法。而乘数的某一位就决定了它是否加倍乘数啊,就是这样的哈,

再将这四位。然后我们再将这四个位积一起相加啊,乘积的位数扩大一倍啊,结果我们得到了a×b的值。呃,这是我们分析笔算乘法的一个过程,那么我们接着接着往下看,我们进行一个总结,也就是说咱们的符号位啊,第一步符号位我们看到了a×b。好看到了它的符号,有这么一个心算处理符号,有单独处理它是一个负的负的乘以一个正的得到的结果,还是一个负值啊?我们第二步就是乘数啊,

看它的看乘数的值啊,乘数的乘数的位的位,每位上的数值决定了它是否加倍乘数啊?如果它是一,那我们就进行加被乘数,如果它是零,那我们就不加被乘数啊。然后四位积一起相加啊,这里我们是把这四位的积进行了一个相加啊,进行了一个相加,当它是零的时候,我们零加。加起来还是原来的值不变,我们也可以理解成是加了三位呃,加了三位乘积,

我们再看一下乘积的位数啊,乘积的位数。原本我们是几位小数呀,一二三四,然后最终得出来的结果a×b得到的是几位是八位好。啊,也就是我们乘积的位数扩大了一倍啊,这是一个笔算的乘法啊,我们笔算乘法进行一个改进啊,刚刚我们的一步一步算。问题呢,我们对它进行一个相应的改进,好a×b啊等于a×0点一零一一对不对啊?我们把被乘数用字母a来。来表示啊,

用智能VB来表示,那这样的话,我们这边每一位相乘啊,每一位相乘。末位呃,每一位叫做第一位的话啊,第高位的一达到零点一,它就等于零点一×a加上。第二个是零零点零零,那么第二个就是零点零零×a,第三位的话就是零点零零一×a,第四位是零点零零。零一×a,然后求进行一个求和,得到了我们的a这个值啊,

再往后我们把它进行一个合并成类项。提取一个数啊,提取一个零点一,这一个零点一在括大括号里头是a加上个啊。a加上个什么?零点一,然后括弧零×a对吧?零×a那这个地方,再加上个零点一括弧a+0点1a。我们把它进行提取出一个零点一的一个操作啊,得到了这样一个的结果啊,零点一我们可以表示为优二分之一的。呃,表示为是什么二的负一次方二的负一次方啊,我们进行一个转化。

括弧里a加上个二的负一次方,然后乘括弧乘以零点乘以零。括弧里零×a+2的负一次方嗯,括弧a+2的负一次方,括弧a+0 a+b。就是这样的一个转换啊,我们可以通过前面的知识为一味的。我们可以通过前面一位运算得知二的负一次方是进行右移,一位右移一位啊。右移一位,然后a+0第一步啊,被乘数啊a+0第一步,我们从后往下再往前看啊,第一步的话。是a+0 a+0被乘数加上零的一个操作第二步,

我们前面是乘的二的一次方。呃,也就是用a+0,然后再右移一位,得到的是部分积啊,得到的是部分的积。然后再进行往外算,然后就是部分基因,再加上我们的被乘数啊,加上被乘数之后,然后再乘再右移一位啊,右移一位得到新的部分基因,我们将这一部分的基因。然后再加上个零,再加上个a。

啊,再加上a之后呃,加上一个被乘数,加上一个被乘数之后再进行右移位,再得到结果是吧?我们是这样的一个运算。好东西来说,我们的运算过程是被乘数。总体来看,我们的运算结果是被乘数加上零,然后进行右移,得到我们的部分积,我们用部分积,再加上被乘数,然后以此循环。

啊,产生一个循环的。呃,循环的一个运算,然后再进行最后又一一位得出结果,又一位得出结果好。这是我们的一个过程。这是我们,这是我们的一个运算过程,对吧?笔算乘法改进的运算过程好,我们来进行一个总结啊,乘法运算我们可用。嗯。我们来进行一个总结,

纯化学用药,我们可以用。加可以移位来实现,我们看我们回顾一下,我们刚刚嗯,对它进行的一个改进运算,我们用了两种。运算方法,一个是求和累加,一个是一倍来实现的,也就是说我们乘法运算可以用。加分一味的实现,同时呢?同时,当我们的n=4的时候,

也就是我们刚刚运算的a+a×b啊,我们加了次数是加了多少次?加了四次。那移位同时我们也移了四次啊,由于乘数的末位决定被乘数是否与原部分积相加,也就是说我们乘数的。呃,末位。它如果是零的话啊,我们就被乘数,不会与咱们原部分进行相加啊。如果是一的话,我们就进行一个加的操作啊,然后我们又移移位啊,形成新的部分基因,

同时常数又移移位啊,末位移丢。空出高位来存放咱们部分的这个第一位啊,空出高位来来存放部分这个第一位。第三点,我们被乘数只与部分积的高位相加。其低位被移至乘数啊所空出的高位,低位是它把它移到了咱们乘数的所空出来的一个高的位置。一个高位的位置,而在这个过程当中,对我们硬件的要求是什么呢啊?三个n+1倍的寄存器,也就是我们需要三个n+1倍的寄存器。呃,三个需要三个寄存器,

所以分别是哪三个寄存器呢啊x啊来存放被乘数啊x寄存器来存放我们的被乘数?ACC存放乘积的高位啊,存放乘积的高位mq,存放乘积及乘积的低位,我们需要。x ACC还有mq这三个n+1倍的寄存器,其中两个寄存器具有一味的功能啊,其中两个寄存器具有一味功能。一个加法器,一个加法器ACC是我们的加法器x是纯被乘数,那自由乘都是乘积及乘积的第一位啊,这两个进行期呢,就有一位的功能啊。我们乘法就像转换成加法和移位的运算来进行实现,所以说咱们前面讲讲到的。

嗯,加法运算啊,减法运算,还有移位运算啊,都是很关键的啊,如果同学们不理解啊,可以去前边再回顾一下我们相关的知识。自己呢,也可以课下做几道题去练一练啊,这是我们的乘法,运算好,首先那么我们知道了乘法运算之后,我们来看一下咱们的什么呀?原码的乘法运算啊,首先我们来看一下原码的一位乘法运算规则,

原码一位乘法运算规则,我们这里以小数为例哈,以小数为例。不管怎么样啊,不管怎么样啊,咱们都与前面的运运算方法是基本一致的啊,只需要。加上咱们的符号位的处理键啊,加上符号位的处理符号位怎么来进行处理呢?咱们乘积的符号位单独处理啊x0和y0来表示符号位。啊来表示符号位,它们进行一个异或运算原符号位对。原符号位进行一个异或运算的操作,进行异或运算的操作,咱们数值部分呢,

为绝对值相乘,我们再看数值部分啊。数字部分的绝对值进行一个乘法运算,进行一个乘法运算就得到了咱们原码的乘法运算规则,分为两部分,一部分是多少位,一部分是数值部分。符号位我们进行异或运算啊,多运算啊,数字部分我们进行把它进行绝对值的一个乘法运算,进行一个绝对值的乘法运算,接下来我们看一个例子啊,看一个例子啊,就是以这个小数为例哈。我们已知x等于负的零点一一一零y等于正的零点一一零一啊,

求x×y的。啊源码啊x×y它的源码啊x×y的乘积的源码同学可以简单的想一想啊,我们应该怎么算呀?我们刚刚第一个开始讲到了它的例子,然后讲到了它的过程。那我们嗯来对它进行一个实际运算操作啊,我们可以看一下我们首先我们把它分为。那部分乘积乘数啊,部分乘积还有乘数哦,我们首先要那个。它的乘数是什么?是一一零一啊,一一零一它的部分积啊,部分积是我们的零点零零零,它们俩进行相乘。

啊,相同部分积呃好初态的z0=0啊z0=0,我们可以用这个零点零零零来进行表示,因为咱们的y是小数点后的四位,所以咱们部分积也零。也是这样来表示的啊,第一步要做的就是我们用一乘以啊,再去呃,就是我们的部分积。蔬菜z=0,就加上咱们的,加上咱们的x的绝对值的绝对值就是我们零一一。零一就是它的一个绝对值啊,相当于一个绝对值。嗯。

此时,我们进行了啊,进行一个。商家得到的结果是零点一一一零。将孩子是这个结果,然后我们对它进行一个右移一的一个操作,右移移的一一的一个操作。因为咱们的呃。咱们的被乘数是一一零一,所以啊,末位它是一个一,我们加上呢,是加上x的绝对值对不对?加x的一个绝对值。啊,

我们在对。它进行一个右移操作之后啊,得到咱们的一对一啊,咱们再看咱们的乘数啊,我们进行右移完之后,然后变成了一个是零一一零舍弃了。一啊,和这个一六一之后,我们得到是零点零一一一啊,得到零一,然后在它进行一个。加零的操作啊,把x进行右移移位啊,然后再进行加零,因为是什么,

因为咱们这个y的。再一位是零,所以我们就得到了一个结果是零点零一一一啊,商家得到的这个结果。以此类推,我们再对x进行一个右移移位的操作啊,再对x进行右移移位的操作啊。操作之后,然后得到z2,得到z2啊,得到z2之后,我们再进行加x,因为这个y的末尾是一啊,你加x,然后得到的结果是一点零零零一。

一啊,然后再对它进行一个右移操作,右移一个操作,然后得到一个z3,得到一个z3,得到一个z3之后,我们再进行。因为y的一对是一进行加x的绝对值啊,加x的绝对值得出结果啊,得出结果之后再进行右移啊,再进行右移右移之后。得到a4,然后再嗯,得到a4嗯,然后最后的后一位是零啊,

我们可以得到咱们的。呃,可以看出咱们运算过程的溢出啊,它并不是真正的溢出,因为可以通过我们的移位来改变啊,来改变的不是真正的溢出。刚才我们就得得到了咱们的结果啊,我们可以总结一下,就是乘积的符号为x0和y0进行一个异或操作啊,一个是它的。一个是正数,一个是负数,进行逆过操作,得到的是一个什么负数,而数字的部分按绝对值进行相乘,

进行相乘之后,得到的是这个结果。啊,因此我们的源码啊,再加上它的相应的符号,会得到的是我们这个值啊,它的特点是什么?就是进行了一个绝对值运算啊,并且用一位的次数判断。乘法是否结束啊?用一位的次数判断乘法是否结束,然后它的移位全部都是逻辑移位,这是我们的乘法运算。那我们看完了原码的一位乘法运算之后,我们来了解一下我们原码的两位乘法运算啊。

嗯,首先我们来看的仍然是成绩的符号位,没有符号位啊。溢货操作对原符号位进行一个溢货操作啊,不本机符号位取三列。最高位符号位为真正符号位啊,还有我们嗯,这里取的是三位最高位符号位才是真正的符号位。部分嗯,数值部分也是进行了一个绝对值的形成,和我们一位分化运算是一样的啊。每次取乘数中的两位来形成新的部分积啊,我们取乘数当中的两位之前的时候,我们取的是一位啊,每次一位运算的步长为二。

啊为二每次每次一位的补偿变成了二由一变成了二,它的整个过程呢,和咱们一位跟一位运算是一样的啊。呃,同学们,可以类推一下呃,那这样的话,我们把一位变成了两位,我们可以提高咱们的运算速度,我们可以加快咱们的运算速度,这是咱们原码两位乘法运算的一个规则啊,也是分为了。啊,两部分乘积的符号位,还有数值部分啊,

只不过我们要注意的有两点啊,咱们的就是部分积,那它的符号位指的是几位指的是三位啊?13位的时候,它是最高位啊,那我们每次去乘数的时候用两进行乘积运算的数学部分,运算的时候啊,乘乘数的时候只有两位来形成心理部分的积啊,每次一位的运算。就是步长为二啊。这样的话,我们总体是提高了咱们的运算速度的,提高运算速度的,这是我们源码的乘法,运算好我们来进行一个总结啊。

然后第一点是整嗯数乘法与小数乘法嗯是完全相同的,它们的运算是完全相同的好,可以用逗号来代替咱们的小数点,用逗号的,这就是。原码乘法啊,原码乘符号位单独处理,原码乘去掉符号位运算,即为一个无符号的。乘无符号式的乘法运算,无符号的乘法运算,这是我们的呃乘法运算原码,乘法运算,那么我们接下来再继续往后看哈,看完了原码的乘法运算,

我们接着往下看普码乘法。应该是什么样的呢?古马的乘法运算,我们用x5×y五来表示好它和咱们人马的乘法运算是一样的啊,一样的过程是一样的,只不过我们在普法运算当中就呃增加了一个。矫正法为什么要增加呢?我们来看一下哈,如果说当乘数y为正数时啊,我们都可以按照。原码的乘法来进乘法规则来进行运算,为什么呢?因为咱们呃。那个原嗯原码的补数正数当原刚为正数的时候,我们的原码和我们的补码是相同的。

啊,是相同的,所以我们可以按照原满乘法规则来进行运算,当乘数y为负数的时候,当它为负数的时候,我们这个。原码和补码是不同的,这里我们就加了一个矫正法啊,我们可以把y的补去掉符号位当成正数与x相乘,然后。啊,然后加上负的x进行一个矫正,进行一个矫正啊当嗯,这是我们一个呃嗯,当歪头复数的时候的一个规则。

啊,当我们的乘积乘积的符号位在运算过程当中,它是自然形成的啊,部分积和被乘数取的是一个双符号位。取的是双符号位啊,这里是我们的一个补码运算规则啊啊,第一个是矫正法,第二个的话,我们可以用咱们的。比较法啊,比较法的统计公式是这样的。就是我们x补乘以y补啊,可以换成x×y的补啊,我们用x的补乘以零点y1y2一直到ya-yx补乘以y0。零减去yn就是y零运算规则不受数,

不受乘数符号的约束啊,控制线路比较简明,在计算机中是普遍采用的啊,普遍采用的。好在硬件实现的时候,补码一位乘法是由n+2位计算器啊n+2位计算器补码两两位乘进行的是两位乘,这是我们补码乘法运算的规则。分别进行理解,记住一下就好了。接着我们来往后看哈,看完了乘法运算,我们来了解一下里面的除法运算,首先我们来看一下定点数的除。除运算啊,我们进行笔算的时候进行比算,

这里给出了一个例子,哈x等于负的零点一一一零一一y等于。零点啊,一一一零六求x÷y我们进行笔算的时候就是进行一个除法运算啊。进行我们除法运算和我们实际这个运算规则是一样的,是一样的,首先我们商图需要一个单独的处理,做符号未通完通完。一样是啊,一样进行一个单独处理啊,侵犯上升上升位置嗯,上升位置不固定啊,余数。浮动低位为零啊,减右呃移移位的除数,

减去右移移位的除数啊两倍的正常的加法器,它是两倍正常的加法器,其实是一个两倍正常加法器。我们用机器除法啊,运算规则,我们来看一下啊,符号位嗯异或形成符号位仍然是进行一个异或的操作来。形成我们最后的头号位,而当x的绝对值减去y的绝对值大于零时上升啊,一当x-y的绝对值小于零。是上升零啊,寄存器最末位上升,在寄存器的最末位延伸上余数啊,这里我们余数左移一位啊,低位补零,

减去我们的除数。一倍的长加短器啊,这是我们的定点除法运算,定点除法运算啊。我们来看一下我们的源码除法啊,源码除法啊嗯,源码以小数为例x和y还有x÷y的原码啊,首先符号为进行一个异或运算,然后用x的绝对值除以y的绝对值。值就是说商符有两两数符号位进行异或运算得到,然后商值有两个数的绝对值相除求得,不管是。乘法运算还是我们的除法运算,我们都分为两大部分,第一步是符号位,

第二步是数值部分啊,数值部分。其中咱们在这个式子当中啊x的绝对值是零点x1x2到xa为x的绝对值啊。y的绝对值是零点v1v2v到ya为y的绝对值啊,为y的绝对值咱们嗯商的符号为单独处理进行一个经过运算啊,数字部分进行一个相除进行一个相除约束条件的话。我们可以看一下小数点的定点除法啊x小于x的绝对值啊,小于y的绝对值就是小数。数定点除法整数定点除法的话是x的绝对值大于y的绝对值啊,被除数不等于零,除数不等于零啊,这里的。要记住,我们被除式复位不能为零,除数也不能为零。

商的位数一般和操作啊,操作数的位数是相同的。商的位数一般和操作数的位数是相同的,这是我们圆满的除法运算,那我们再接着往下看啊,圆满的除法运算的。呃,规则的方法第一个是恢复余数法,恢复什么商值,通过比较被除数扣。呃被除数和除数的绝对值大小来进行决定嗯来进行决定。还有绝对值的补数,加上负的y的绝对值的一个补数,然后负的y的绝对值的补数当余数为负时啊,需加上除数。

其将其恢复成原来的余数啊,我们当余数为负时,需要加上除数,将它恢复成原来的一个余数,而不恢复余数法是一个加减交替法,就是我们加减交替法。当余数r啊。大于等于十商为一做一个二乘,以阿派减去y的绝对值的运算。当余数小于零时,商为零做的是二×ri,加上y的运算,那我们这里可以给出了两个例例子啊,同学们可以看一看。可以大家看一下,

进行理解,深化一下好,接着往下看我们嗯,讲完了原原码的除法啊,原码的除法,我们接着往下看的是补码的除法运算。啊,除法除法运算中呢?有两种方法,一个是恢复余数法和加减交替法和我们的,其实和我们的原码是一样的。一样的补码的加减交替规则,加减交替法规则,我们可以看一看比较比较被除数啊,和和余数和除数的大小。

两数符号相同时做减法啊,用x的补减去y的补,若余数与除数符号相同,表示构件。两数符号不同时,我们做的是加法,做余数与除数不同,符号表示是后点。啊商值的确定商值的确定x补补y补同号商为赠啊购减十。商零不够减十商的是一啊x补与y补一耗时商为负过减十商为零,不过减负一。商符在运算中是自动形成的,自动形成的余数与原码加减交集法的规则是相似的。我们可以看一下哈ir与y嗯,同号上为零啊,

异号上为一七的余数是这个样子的哈,用r×ii减去,加上个负的y。啊,这个是ii+1不等于二×ir加上呃500,这是我们的补码除法运算的规则啊,除法运算的规则。好,我们嗯,看嗯嗯,看完了咱们的。定点数的加减乘除运算,我们接着往下看,接着往下看我们的。


页: [1]
查看完整版本: 12.第12节课第二章数据的表示和运算