找回密码
 立即注册

微信扫码登录

使用验证码登录

搜索
查看: 44|回复: 0

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

[复制链接]

4902

主题

3

回帖

1万

积分

管理员

积分
14804
发表于 2024-4-15 08:55:29 | 显示全部楼层 |阅读模式
同学们大家好,我们学习完了,第三节当中的数的表示和运算,那么我们接下来进行第四小节的学习是定点的运算,在定点运算当中,我们看第一个知识点是一。位运算,我们学习一位运算前面呃我我们在学习一位运算的同时,我们需要首先要知道一位的意义是什么,比如说我们15米等于1500。500厘米,我们看这个数字的转换,在这个当中15,我们将小数点进行右移的两位啊,把15小数点右移两位得到的是1500。

1500,这是我们数字之间的一个小数点的移位啊,那如果把它在我们机器与。语言当中进行表示的话,好在这些语言的用语当中,我们小数点固定之后就不会再进行变动了,所以咱们就是15相对于小数点左移了两位,我们把15相对于小数点。左移两位小数点不动啊,就得到了1500嗯,那么我们可以看到,如果说我们左移它的绝对值是扩大的。如果说我们进行右移,那它的绝对值是缩小的,是缩小的,

在我们计算机当中移位,通常会和加法和减法进行配合。从而去实现我们的乘和除的运算啊,去实现乘和除的运算,所以我们这个一倍运算还是非常重要的好,我们接着往下看。那么,我们首先第一个要知道的是,我们源码的算术移位源码是怎样进行算术移位的,包括它的左移和它的右移。那么,我们看这个例子呃,在我们源码表示当中第一位。是它的符号位,后面是它的数值的位数啊,

数值是零零一零一零零,我们把它转化成相应的十进制,就是用二的四次方加上二的平方。是等于20转化成我们十进制的位数是20,它的每位的阶码,我们由上面这个可以表示出来,是从二的零次方到二的六次方,是它的一个阶码。那这样的话,我们把原码的算术进行算术右移是怎样一个结果呢?我们可以看。我们可以看到,我们将嗯源码的小数点是在这个位置,如果说我们把源码进行算术右移的话。啊算术右移把小呃那个小数点后位又多了一位零那它的高位就会空出空出一个位置来,

那这个位置我们用零来补充好高位,我们补零。第一位第一位的这个零,我们舍弃不要舍弃,不要这样的话,我们就实现了一个算术的右移,我们可以看到。这个得到的是转化成十进制数,是负十,也就是二的三次方加上二的一次方是八+2,得到的是十好,那右移一位就相当于我们用。负20÷1个二的一次方呃,除以二的一个一次方,我们可以看到它对应的对应的位数的。

间码减了一个一间码减了一个一啊,就零变成了二的零次方啊,一乘以的是二的一次方。这一位的零乘的是二的零次二次方,这一位的一对应的是二的三次方。因此,我们得到的这个数是可以看作是用负的20÷2的一次方除以二。啊,我们再继续往后移,再继续进行算数,右移移位进行算数,右移移位我们。呃,小数点后位的这一位低位的零同样是舍弃把它移过来之后,我们高位又空出一个位,

然后我们用零来填补,用零去来填补高位进行补零。补零之后,我们对应的一的位置是乘以二的零次方,再加上二的一次方乘以一得到的数是五转化成十进制数是五。然后右移两位的话,我们是用20同理,我们用20除的是二的平方,除以二的平方得到了我们的五。好,我们继继继续把源码进行再次右移,移位再次右移,移位我们移出移出来的这一位是看到了我们,看到是一对不对,看到的是一。

那这样的话,我们再继续把一舍弃把一舍弃高位补零高位,同样是补上零,然后这样我们得到的一个数是零零零一。行,那这样的话,我们把它转换成实际基数,我们可以得到是什么是负二是负二,那如果我们按照我们上面的规律来看的话,我们把它。除以用负20,除以23次方,那这样的结果得到的对吗?啊,得到的是二点五对不对?

得到的是二点五,那这样的话和我们实际得到的是不一样的。啊实实际得到的是不一样的,为什么不一样,我们可以知道我们舍弃的这一位是是一那就是二的负一次方对吧,二的负一次方。二的负一次方被我们舍弃,那这样的话就可以看出来,我们如果说舍弃的低位,它不等于零的话,那我们的精度就会降低,就会丢失一个精度,对吧?舍弃的实际上。就是二的负一次方好丢失了我们的精度,

这是我们右移啊,算数原码原码的算数右算数移位当中的右移是怎样的?我们可以总结出规律哈。原码的算术,一位符号位保持的是不变的,我们的符号位始终是一始终是一符号位保持不变。仅对数字位进行移位,对我们后面的数字位进行相应的移位,我们可以移一位,可以移两位,还可以继续移三位,但是当我们在移位的时候,如果说我们第一位是零。我们就可以直接舍弃啊,如果定位是一的话,

我们舍弃的时候它的精度是会丢失的啊,是会影响我们的精度的。因此,我们在算数,在原码的算数呃,移位的右移的时候算数,右移的时候我们高位是对它进行了一个补零,低位是丢弃啊,低位舍弃高位补零。如果说舍弃的位等于零,那就相当于除以二,相当于除以二,我们一步一步的往下来,是相当于除以二。啊,

如果说舍弃的位不等于零的话,就比如说我们舍弃的是个一就会丢失精度,丢失精度,这是我们算源源码的算术诱因,那么我们看完源码的算术诱因。之后我们来看一下我们的左移是怎么样的,同样的,我们的源码是呃负20,我们是负20,用二进制来表示的源码是这个数啊。前面是一个符号位,前面是一个符号位,后面是数值啊,把它把数值进行啊,进行一个左移,

那么我们的符号位同样保持不变。同样保持不变高位啊,高位高位的零,我们丢弃高位的零,丢弃然后低位,我们补上零啊,低位补零,高位丢弃。得到的是零一零一零零零好,我们把它转化成十进制,转化成十进制的数之后啊,是多少是二的五次方加上二的三次方。啊,等于个40,也就是我们的负40好,

我们可以看到呃,由20变成负的40,它是乘以一个二的操作,对吧?是乘以一个二的操作,我们往左移。啊,对应的,我们的解码是啊二的n+1平方是加一的啊,二的幂是加一的。也就说,我们对应的这个零呃,这个零的位置到了这里呃,它对应的呃码是二的一次方对应的解码是二的一次方呃,这个零到了这里对应的解码是二的二次方。

啊,同理,我们的一往前移了。一位对应的阶码也加变成了二的三次方,也就是说对它是乘是进行了一个乘以二的操作。好,我们再再继续往下看,如果说我们继续往左移,再移一位的话,再移一位,然后同样我们的高位高位的零舍弃啊,高位零舍弃一。往前移一位啊,第一位的话嗯零移到这里同理,然后嗯这个零移到了这一位,

然后。低位的零我们低位,我们补一个零低位补零好高位,省气高位省气啊,这是我们左移啊,再继续往左移一位的话。我们再继续往左移一位的话,倒是呃,它的这个最高位是一我们丢弃的是一把一这个高位的值一。丢弃,然后末位补零啊。低位补零,低位补零得到的是一个我们可以看到是一个什么是二的五次方转化成十进制是负的,32是负的32。好,

我们再看上面的这个,我们得到的把它是一零一零零零转化成十进制是二的六次方加上二的四次方得到的是80。80我们相对于上面的一个是二负的20×2^2,而当我们再继续往下走的时候,再继续往左移的时候,我们丢弃了一个它的高位高位。高位它测时候不等于零,它是一,那么我们就丢失了一部分数据,是不是啊?我们把它呃对应的二的七次方丢丢弃了,不要了,然后之后正好从十进制的数就会出现了一个错误。错误出现了一个错误呃,因为我们在这里机器的字长是七,

也就是最高的表示的是二的呃,最高表示是一。是127。到127。然后我们丢弃了它高位上的实值,所以说我们这里就产生了一个错误啊,不再是用负的20×2的三次方得到的结果是不对的啊。所以就会如果我们嗯舍弃了位不等于的时候,就会出现一个严重的错误,好,我们来总结一下原码的位算数一位啊,原码算数一位一位呃一位同样是符号位保持。逐渐仅对数值进行了一个移位的操作,如果是左移,我们的低位是来补零的,

低位是补零,高位是进行舍弃的啊。低位用来补零,高位审计。值得注意的是,我们呃呃,我们高位如果是等于零,则相当于乘以二呃一一位,就相当于乘以二。如果说高位不等于零,不等于零,它是一的话,那我们就会出现一个错误,就会出现一个错误,出现严重的错误,

这是我们左移,我们在右移的时候出现的是一个什么?精度的丢失,精度的丢失,当我们左移的时候,如果说高位不等于零啊,如果说舍弃的位,它不等于零,那就会出现错误啊,这是我们原码的左移和右移。那我们举的这两个例子呢,它都是一个整数,那我们看一下小数,原来的小数的左移和右移是什么样的规律呢?好,

我们看这张图它。嗯,同理跟我们的定点小数是一样的道理啊,我们定点小数和我们的整数是一样的道理的,嗯,我们的源码源码。符号位是一符号位是一,如果是个负数啊,如果是个负数符号位是一。那么我们的呃对应的小数点在这里,小数点在这里哈,小数点在这里对应的是一个纯小数是一个小数是零零一零一零零,我们如果说进行一个算。算术左移的运算算数左移的运算啊,我们将。

低位啊,高位省气啊,高位省气,这个省气啊,省气之后一移到这里来,然后低位进行补零,低位进行一个补零啊,然后再如果再往前移的话啊。高位舍弃,把一舍弃,然后灵活左移移位,然后低位空出来的移位进行补零操作啊,这是我们的。算术左移,同理,

我们的算术右移,算术右移的时候是怎么样进行操作的呢?是我们将。高位进行补零,高位进行补零啊,低位进行啊,舍弃低位进行舍弃,算是右移低位舍弃。高位补零进行一个左移,高位进行一个补零的操作啊,进行一个补零的操作,同理我们一样是。符号位保持不变,仅对数值进行操作,右移的话高位补零,

高位高位补零,低位省气。啊若舍弃的位等于零,则相当于除以二。啊若舍弃的位不等于零,则精精度会丢失啊,会丢失精度左移的话,低位是补零的高。位是舍弃的啊,舍弃的位置啊,舍弃位等于零则相当于是乘以二,如果说不等于零则会出现一个误差,则会出现一个严重的误差,这是我们定点小数的一个算。算数的左移和右移好,

我们看完算数的左移和右移。原码的算术左移和右移,还有它的整数和小数的表示,我们来看一下反码的算术移位,反码的算术移位我们知道。正数反码的移位的过程当中,我们的正数的反码正数的反码和它的正数是的原码是相同的,比如说我们的正20,它的反码同样也是20。是零零一零一零零,它的反码和它是相同的,那这样的话呃,正确的反码的移位运算,那么就与咱们的原码是一个相同的啊,左移。

右移是怎么样进行变换的?我们右移的时候是高位不灵,低位舍弃,左移的时候是低位不灵,高位舍弃对不对?反码。这是我们反码的算术移位正数,非常简单,和我们的原码讲的是相同的啊,讲的是相同的,但是当我们的反码。呃,是负数的时候,当我们反码是负数的时候。它和反码的数值是不同的,

是不同的哈,反码的数值与原原码是相反的,是相反的,因此我们复述了反码一倍的运算规则是什么样子的,它是和它相反的,如果它是零,它就对应的是。一啊,如果它的一对应的是零对不对啊?如果它的零它对应的是一,那这样的话,我们如果将它左移或者右移的话,高位对应的是负的是一啊,高位对应的是一低位。低位呃,

左移的话,低位补一高位舍弃右移的话是高位补一低位舍弃是这个呃,是这个是这个样子的哈,所以我们在。反码的算术移位的时候,我们只要明确两点,一是正数的时候和原码相同,负数的时候啊,因为反码的数值和原码的数值是相反的,所以我们嗯在左移和。右移的过程当中,高位和低位补的位数是一而不是零,是一而不是零,哈也跟原码是相反的,所以我们右移高位补的是一,

低位进行舍弃。左移低位或者是移高位进行舍弃是这么样的一个过程。好,我们接着往下看,这是我们反码的一个算术移位,我们看完反码的算术移位之后,我们还需要知道我们。补码算出一位是什么样子的?我们补码算出一位是什么样子?呃,补码的算术运算。我们看到我们午马的算术运算也分为正数和负数,也分为正数和负数两种啊。嗯,我们正数嗯,

我们的正数,如果正数和我们的反码和原码都是相同的,因此正数的反码的一个运算与咱们。嗯,源码是相同的,补码也和咱们的源码是一样的。它的右移是高位补灵,低位舍弃,左移是低位补灵,高位舍弃啊,左移是嗯舍弃。进行舍弃啊,然后但是我们补码的呃,如果是负数的话,如果是负数的话,

我们将原码转化成补补码的。换算是怎么样进行运算的?我们前面也有讲到过啊,它是反它是将啊原码取反末位加一个位取反末位进行加一啊复数的补码,它补码等于反码末位加一。啊,从而就导致了咱们反码最右边的几个连续的一都因为进位而变为零啊,比如说我们呃,这个例子当中给出的我们的源码是零零一。零零呃零零一零一零零啊,是20我们的反码对应的是。一一零一零一一啊,那我们的补码是什么样子的?是将嗯原码进行取法末位,再加一末位,

如果把它加上一之后加上一之后。它就会变成零啊,这个呃,变成嗯,变成零往上进一位进一位之后它也是零,然后再进一位进一位之后,然后。第三位变成了一对吧?第三位变成了一,然后那个嗯,就是一零。一一+1之后的操作得到了祖码是一一零一一零零啊,我们因为最右边的。呃,最右边的末位要进行一个加一的操作,

加一的操作就会导致右边的几个连续的一都因为进位而变成了什么?都进位这两个连续的一因为进位而变成了零啊,直到进位碰到第一个零,直到进。咳。直到我们的进位碰到了第一个零,碰到了第一个零就停止了,前面呢,就和咱们的海马是一样的啊,我们可以从此总结出咱们的规律,总结出咱们的规律来。啊,补码啊,步数的补码中最右边的一及最右及其右边啊,最右边的一最右边的一我们最右边的一这个一和咱们。

呃及其右边的源码和右边的一个源码,它是同呃和右边的一个补码,它是同源码的,它和源码是相同的,对吧?因为它进行了一个加一的操作,加一操作之后,直到它遇见了。啊零他就停止了一个加一,然后他呢加一操作之后和咱们的嗯源码的值是相同的,和咱们源码的值相同的,再看我们嗯一的。左边一的,左边它的值,我们可以看一下,

它是和咱们的反码是一样的啊,它两个是一样的,和咱们的反码是一样的,所以说。我们在进行复数补码的移位运算的规则,我们可以怎么样啊?来进行啊,就是比如说我们进行右移,进行右移的时候,我们的高位是。是根据咱们的。高位是根据咱们的啊,反码的高位是要进行补一的,高位是进啊,高位是要进行补一的,

高位是要进行补一,然后低位进行舍弃。如果说要进行左移的话,它是同和咱们的源码是相同的,和咱们源码是相同的,所以进行低位补零高位进行一个舍弃,这是我们读马的一个算数一倍的。呃,讲解啊,我们要掌握的是啊,胡马它分为正数和负数,如果是正数的话,和我们的原马的。操作左移和右移都是一样的啊,右移高位补零低位舍弃左移低位补零高位进行舍弃,

如果说我们的补码呢,算出一位当中的数,它是一个负数的话。啊,我们的原码转化成补码的过程是末位是呃,反是个位取反末位加一是把它的反码的末位进行一个加一。在加一的过程当中,如果说我们呃遇到几个连续的一,它都会因为加一的操作而变成零变成了零之后,然后它和呃嗯这个一的。右边和我们的原码的值是相同的,一的左边和我们的反码值其实是相同的,我们从此我们就把我们的补码分成了两块。啊,一块是同原码的,

一块是同反码的啊,那这样的话,我们进行移位运算的时候,如果说是右移啊,它是和它的和我们反码操作是一样的,高位不一。低位舍弃,如果是左移和我们的原码的操作是一样的,低位补零,高位舍弃是这个样子的啊,这是我们母码的算术移位。我们看完这些例子之后哦,我们再看进行一个总结,我们可以看到哈啊,我们的算术移位的规则是什么样子的啊?

我们都知道是符号位不变,仅对的是对什么?对数值位进行了一个移位符号位,不管是它正的还是负的,它符号位是不进行变换的啊,我们操作都是在我们数值位进行的一个移位,这是我们的一个规律好,然后。如果说我们的马制是原马,古马或反马啊,它是一个正数啊,如果说我们的数是一个正数,它的马制不管是原马还是古马还是反马我们。添补的代码都是什么都是添的零是吧?高位和低位都是呃左移或右移,

我们都是加零,然后进行舍弃一位啊,添补的代码都是零嗯。如果它是负数的话,我们就分了不同的情况啊,如果是原码的话,我们填补的代码同样是零,如果是补码反码的话,我们补的代码是什么是一啊?呃嗯,是一然后但是如果是我们的补码的话,我们就会如果是就分为左移和右移左移的话,我们是填的零右移的话,我们是填的一哈右移的话是填的一。同样的是同样的,

我们可以看出我们刚刚运算的过程当中是左移的话,我们相当于是什么像,如果是二进制的话,相当于是乘以二啊,相当于乘以二,如果是右移的话,我们相当于是一个除以。第二的过程相当于是除以二的过程,但是由于我们的位数有限,因此我们有时候没有办法用算术移位去精确的等效乘法除法这些运算啊,因为我们的位数是有限的。什么我们就有时候会出现,就没有办法去精确的去等效于咱们的乘法除法运算,这是我们算数移位的一个规则。那我们来看一个例子来算呃,

一位运算的一个例子,为什么说它可以去呃你一位可以真可以去表示咱们的乘法或者除法的运算呢?我们看一个例子啊呃,我们看到这个。原码啊,原码负20的原码啊,是还是这个数还还是用二进制啊?负20用二进制来进行表示它是一个整数哈,将算术进行左移进行左移进行左移,我们刚刚也。讲到过啊,讲到过左移的话,左移一位是负20×2的,一次方对它左移,相当于乘以一个二×1个二的一次方啊,

左移一位相当于乘以二的,一次方左移两位,我们乘以一个二的二次方。啊,进行一个转移。为之后,然后我们如果说要计算负20×7,我们怎么样对它进行计算呢?我们怎么样进行计算?我们给出一个。你加法寄存器加法器里面有个加法器,我们七我们把七转化成,首先我们把七转化成咱们的一个二进制,二进制的话,它是一一一对吧?

24我们转换成十进制的表示方法是二的零次方,加上二的一次方,再加上二的二次方,求和得到的是七对吧?那我们负20×7同理可以转化成咱们是负20乘以括弧里面二的零次方,加上二的一次方,加上二的二次方。那我们我们我们我们可以通过咱们呃算数嗯,我们的一位运算可以得到二的零×1个二的零次方啊,我们是进行是负一位而乘以二的一次方,我们是把它进行。怎么着?进行左移一位啊,乘以二的二次方等于左移两位,我们就可以对它进行一个啊运算啊,

进行一个运运算就转化成负的20。乘以的二的零次方加上个负的20×2的一次方,再加上个二负的20乘以二二次方把它进行不左移运算左移一位左移两位,这就是我们的移位运算可以进行。咱们的乘法运算,它已经代表咱们乘法转换成咱们乘法运算,这算是一味的一个应用举例,应用举例啊,同学们要知道,要了解它。那么我们看完嗯,学习完以上的内容之后,我们来看一个例题,看一个例题,如果说啊,

这个例题当中设机器数自长为八位为八位。啊,它含一位符号,位含一位符号位,写出a=26时三种机器数左移右移,一位和两位后的表示形式及其对应的真值,并分析。及其结果的正确性好,我们知道它的结果并不一定会正确,对吧?如果说它高位是一的话,那就会出现什么嗯?会出现一个错误,或者说是进度的丢失的情况,那我们来看一下这个题哈,

我们a=26,首先我们要把它转化成一个啊。二进制。二进制的一个表示,二进制的一个表示,那我们可以得到咱们呃a的原码啊,它是一个,因为它是一个正数,它是一个正数,所以说它的原码等于它的补码等于它的反。反码等于它的反码嗯。那这里它的一个符号位是用零来表示,因为它正确用零来表示啊,那一味的操作,我们有表格可以看出一位前它是这个是是用零逗号零零一一零一零来表示对应的真值是。

是26,我们把它进行左移移位啊,进行左移移位的话,小数点的位置在这里啊,我们进行左移进行左移之后,然后高位舍弃。高位舍弃低位补一个零,得到的是零逗号零一一零一零零,它对应的二进制是正的52,正的52。好,我们嗯,左移两位的话,左移两位高位舍弃,把这个最高位的零舍弃,

然后低位补一个零,再补一个零啊,对应的是我们的正的104。好再左移,再把它进行右移的话,我们怎样进行操作?右移的话,我们是啊,这一位舍弃啊,第一位舍弃高位偏零高位偏零啊,第一位舍弃高位偏零,然后得到的是正的13。好用一两位的话,我们把它的一啊舍弃掉啊。高位偏零高位加一个零,

那这里一舍弃的时候,我们就舍弃了呃,它的一个值对吧?舍弃了一个,它的影响了它的一个精度,影响了它的一个精度啊,左移的时候对。最高位丢丢一,我们左移的时候,如果最高位丢弃一个一的话啊,把一如果丢掉啊,得到的是零。逗号一零。一零零零一位,再补一个零,

这个时候结果就会出错啊,就不是在它的表示范围内会出错了。然后如果右移的时候第一位丢弃了一个一相当于丢了一个二的负一次方还是z次方,我们用13除以个二。是吧,四三除以除以除以个二得到的是什么?六点五对吧?好影响了它的一个精度,影响了它的一个精度,好,我们接着往下看。嗯,看下一个例子嗯,如果设我们的机器制长为80含一位符号位,我们要写出。

a等于负的26那三种奇奇数列左移右移,一位和两位后的表示形式及对应的真值,并分析其结果的正确性。我们上一题分析的是什么?分析的是a是。正数它是正数的时候,我们再看一个它是负数的时候怎样来进行表示啊?同样,我们先把a进行一个。先把a先把a等于负的26转化成一个二进制的表示,转化成一个二进制的表示,它的原码好,我们可以看到它的原码是什么样子的?一位钱一位钱,它是一个一零零一一零一零对应的真值是负的26啊,

对应真值是负的26。左移移位的时候,我们把它进行左移移位啊,它是一个负数左移移位之后高位。舍弃低位补零得到的是负的52,再进行左移两位啊,高位舍弃低位补零啊,低位补零是负的104。啊右移移位,我们把它进行右移的时候怎么样去右移啊?是我们的第一位进行舍弃。高位进行补一个零,得到的是负的13再右移两位的话,我们得到的是啊。把一舍弃末位补零得到的是负的,

六啊是一样的啊,左移移位时候啊。最高位丢一,结果呃左移左移的时候最高位如果是丢了一,那结果会出错,左移的时候最低位如果丢一,同样是影响我们的精度的啊,我们刚我们之前都讲过了啊。好,我们看完之后我们再看我们的这个源码,然后再看我们的补码啊,因为钱是这样的啊,补码是末呃。各位取反末位加一将反码,将它的反码末位加一对应的增值对应增值负26啊一位,

唯一一位啊,得到的是这个。丢弃了高位末低位负零,然后得到负二负52,由于两位同样是。y不零高于负七,得到负负104右移一位。我们把它进行右移啊,如果说右移的话,怎样进行移移位移位的话,我们就是加了一个补的是什么?啊是一啊,补的是一,补的是一,这一位舍弃啊高位补的是一,

得到的值是负13好,又以两位。同样有两个一,然后。末位进行舍弃,然后四弃右移的时候高位丢零啊,结果出错。


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|5432考试网 ( 蜀ICP备2022024372号|川公网安备51152402000101号 )|网站地图

GMT+8, 2024-4-30 22:34 , Processed in 0.071762 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表