找回密码
 立即注册

微信扫码登录

使用验证码登录

搜索
查看: 49|回复: 0

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

[复制链接]

4902

主题

3

回帖

1万

积分

管理员

积分
14804
发表于 2024-4-15 08:55:41 | 显示全部楼层 |阅读模式
一,然后。末位进行舍弃,然后四弃右移的时候高位丢零啊,结果出错。左移的时候高位丢零,左移的时候我们把高位丢零啊,最后出错丢移的时候低位丢一,影响的是它的精度啊,我们的同样我们的反码,看完我们的补码之后,我们看我们的反码。移位前是这样的啊,同理啊,一样的左移移位啊,

我们补的是一海马,补的是一不是零啊,补的是一。因为两位我们这里补了两个一啊,左移两位补了两个一,右移的时候我们补的同样也是一。得到的是负六左一时高位丢零,结果出错右一时低位丢零,影响它的一个精度,影响它的一个精度,这是我们复述的啊,原码补码。反码左移和右移的一个转换过程,一个过程啊,我们课下要多去理解,

多去理解,多做几个题去理解理解,咱们到底是怎么样一个规则啊?嗯,我们讲完了,咱们的呃移位运算啊,移位运算上的算术余算术移位好,算术移位还会有一个概念是叫逻辑移位,我们来看一下逻辑移位是什么样子的好?我们可以看作它是对无符号数的一个算术移位,我们刚刚看到算术移位,它有一个是带符号的,它有一个符号位啊,那么逻辑移位的话,它就是没有符号的,

可以看作是无符号的算术移位啊。逻辑右移,我们对高位进行啊,对高位进行补零啊,低位。省气低位,省气高位普灵。逻辑左移的话,我们对低位进行补零,高位进行舍弃啊,高位舍弃直接进行左移,右移直接进行左移和右移啊,逻辑右移高位补上零。低位进行审计逻辑左移,低位补零,

高位审计。好,那我们来看一下啊。算术移位和逻辑移位的,它的一个区别啊,无符号处的那个。咳。我们算术移位相当于是有符号的移位逻辑,移位相当于是无符号的移位,相当于是无符号的移位,比如说我们进行呃用零一零一零零一一。进行一个逻辑的左移,逻辑的左移,我们就把它进行一个左移啊,左移补了一个零。

啊,逻辑的右移逻辑右移之后直接右移,然后啊低位进行补零嗯。算数,如果是算数右移的话,如果是算数右移的话,我们要怎样去进行移位啊?这是一个有符号数的进行移位。这是我们首先这是一个正数,正数的话,移位的话,我们诶补零啊。它是有符号的,零是代表一个符号位啊,代表一个符号位。

我们看再看下一个知识点,再看下一个知识点哈,循环移位什么是循环移位啊?哦,我们循环移位可以看一下,如果说是我们进行一个左移啊,循环移位进行一个左移的话,向左向左移。那这样的话,我们这个零对应呢,它就会嗯,零对应的是补到我们这个位置上来。那就变成一一零。一零一一零啊,循环左移啊,

高位高位,我们将这是一个不在定位位的循环左移,不在定位位的循环左移啊将。最高位啊。零不到咱们这里来啊,变成了这个啊,如果说呃是我们带进位位的循环转移,什么是进位位呢?我们通常要将进位位。对表示将近位位对用CF来表示啊,比如说我们一一。零加上个一零零进行一个加法操作的话,那我们得到的数是零一。零一那它就会进上一位会进上一位,那这里呢呃就就用CF我们通常用CF来存储,

咱们的进位位啊进位位。如果说将近将再近位位的啊数进行一个循环左移的话啊,进行循环左移的话,我们这个近位位就会到咱们的。左移移位啊,左移移位。向前定位位,这里变成了个零,然后在后面的数依次往前移一位,然后咱的定位位就到了咱们的最后面,到了最后面啊,进到了后面。到了一个最低位,变成了一,这是我们的带进位位的循环左移带进位的循环左移,

我们可以看到以下的四个图是怎样进行移位的?好,刚刚讲到了循环左移不带进位的循环左移,我们直接将。最高位啊,放到咱们的呃,最低位啊,将最高位放到咱们的最低位进行一个移位,然后第二位放到最高位,第二放到最高位,这是一个不带进位的循环左移带进位位的循环左移。我们就将咱们的进位位进行一个啊,放到最低位,放到咱们的最低位,然后最高第二。

那个正常的最高位放到咱们的进位位上,放到进位位上,这是咱们的循环左移右移的话,同理是一样的啊,不在定位位的循环左移循环右移,我们怎样进行右移看右移的话?那这样的话,我们嗯,这里的一就会到了,咱们最高位到了,咱们最高位。同样,咱们呢,再进位位的循环右移,再进位位的循环右移啊,

就是向右移的话,那我们。嗯的最低位啊,我们的最低位就会到我们的符号位上,到我们的定位位上,到我们的定位位上哈,到我们的定位位上,这样的一个循环移位,这是我们的循环移位。我们要了解掌握的哈呃,我们看了我们本章的移位运算,就是讲到了这些知识点,我们来大体回顾一下定位数的移位运算啊,它包括了我们的算术移位逻辑移。移位和循环移位啊,

算术移位逻辑移位和循环移位算术移位当中,我们又讲到了哈,如果说我们左移就相当于什么啊?相当于乘以一个基数而右移的话,相当于是除以一个基数,我们计算机当中通常是运运用到二进制,那它的基数就是二。好,所以一我们相当于乘以一个二来操作,又一相当于除以一个二来操作,那我们算术移位的当中,我们讲到了原码反码和补码,它们是怎样进行移位的啊?我们原码原码又分。呃符号位,

它不参与一位啊,左移和右移都补上一个零啊,我们不管是原码反码还是补码,我们的符号位它是都不参与运算的,我们参与运算的都是一个数字部分。啊,符号为原码的左移原码,不管是左移还是右移,我们补的都是一个零,补的都是一个零,我们反码反码。嗯,符号位也是不参与运算,左移右移补零。我们的补码过程当中啊,

补码当中复数补码最右边的一及其右边与原码相同时,最右边的一与左边的反码相同啊。啊,负号位不参与运算左移补零啊,右移补一右移补一。如果他是那个。好,我们的逻辑移位啊,左移和右移都不灵,移出的位直接进行一个审计,移出位直接进行审计,循环移位是什么?又分为我们的带进位位的和不带进位位的。啊,带进位位的,

我们用移除的位补上一个空缺啊,不带进位位,我们直接用移除的位补上咱们的空缺带进位位的,我们就将移除的位放到进位位上啊。原进位位上补上空缺啊,划进位上原位位上补上空缺,这里需要注意的是,我们由于反码补码原码位数有限,因此啊,某些。时候啊,某些时候进行了一个呃算术移位,就不能够精确的有效的等同于咱们的乘法和除法嗯。这是我们这一节当中的定点数的一位运算第一个大知识点。一位运算好,

那么我们接下来接着去讲咱们的加法运算和它的溢出判断。首先我们看一下我们的加法。呃,规则是什么样子的?我们如果要进行加法运算的话,我们首先要判断它的符号位啊,我们原本要判断它的一个符号位。如果说符号位相同,我们就进行一个绝对值相加啊,我们将绝对值进行相加,如果说我们。嗯,它的得到的结果和我们的符号啊,结果符号。不变。

好,我们看完我们的嗯,定点处的我们讲完了,我们定点处的。我们讲完了,我们定点处的一个运算,我们来接下来看加法运算啊,加法运算和它的一个溢出判断。我们首先看一下原码的加法或减法运算,首先我们看一下它的加法规则。在做加法前,我们先判断它的符号位。如果说符号位相同,绝对值相加,结果符号不变啊,

如果说不同,则做减法啊用。绝对值大的去减去绝对值小的啊,结果符号与大与绝对值大的相同嗯,这是我们的加法规则,减法规则,我们嗯是将减法变成咱们的加法。啊,等同于加法进行处理,等同于加法进行处理,原法运算符号位单独处理原法运算的时候,我们符号位是单独进行处理的哈。我们来看一下呃,我们来看一下原码,表示有符号数的时候,

如果说我们用14加上啊,一个负的14啊,进行一个加法操作的话。我们将14转化成一个二进制来,表示转化成一个二进制来,表示。哈哈哈。是零零零一一一零啊,负14就是一零零零一一一零啊,我们如果它直接对它进行一个加法运算,加法运算得到的结果是什么?得到的结果它不是。是零出错了啊,那这里的话,我们14+1个负十十十四它。

这里的话,我们14+1个负数。这里的话,我们用14加上负的14,它得到的结果是零,得到的结果是零,但是我们直接将原码进行一个加法运算,它得到的结果啊,得到的结果是错误的,得到的结果是错误的。那我们我们怎么样把原码进行一个加法运算呢?我们刚刚也说到过原码加法运算的一个规则啊,如果说它两个数都是正数的话啊。好,我们的数都是正数的话,

那就用它的绝对值做加法,结果是正数啊,结果得到的仍然是正数,如果说我们两个数是负数的话,我们用绝对值做加法啊,结果。为负数结,结果为负数哈,如果说在我们运算过程当中出现了一个正的一个负的,就相当于咱们这个14来说和刚刚的这个例子,如果出现了一个正的和其和负的的话。我们的运算规则是将绝对值。大的减去绝对值,小的啊,那它的符号是从我们绝对值大的数啊,

和我们绝对值大的数相同的,如果用负数加上正数的话,同样是用绝对值大的去减。去绝对值小的符号,从咱们绝对值大的数相同啊,从绝对值大的数相同,那这里我们看到这个例子,我们将十呃14和负负14进行相加。我们看到它的这个符号位是不同的,一个正数一个负数啊,进行相加,我们可以用减法啊去来进行一个实现啊加法去来进行实现,就是我们可以减去它的一个。啊啊,减去它的一个反码,

减去它的一个反码啊,原码的减法运算就是减数符号取反变为加法嗯。那这样的话,我们是减去一个呃,一个它的嗯。减去它一个正数啊,先相当于减去它的一个正数,就是得到了是一个零结果就得到了哈原码的减法运算,相当于减数符号取反转变为加法。啊正数减去负数等于的正数,加上正数,那负数减去正数等于负数,加上负数。正数减去正数等于正数,加上负数负数,

加上正数等于负数减去负数,那同样我们把它转化完之后就可以用咱们的。什么用我们的加法运算去实现相应的规则?这是我们原码表示有符号数的时候的一个加法运算规则,还有减法运算规则。那么我们看一下啊,除了这个之外,原码之外,我们看一下补码的加法运算和加法运算公式啊。比如说我们的加法运算啊,如果是整数的话,我们a+b的补就等于a的补加b的补,如果是整数的话,它的模就是二的n+1次幂啊。二的n+1次方,

如果说是小数的话啊,如果是小数的话a+b的补就是a的补数,加上b的补数,它上面的模是以二为模的啊。在补码的加减运算过程当中,它的符号位是可以直接参加运算的,是可以直接参加运算的。在做减法的时候,在做减法的时候,如果是a-b,我们可以把它转换成a加上。啊b啊,加上b的啊,加上b,加上负b,

对吧?那么我们就可以得到啊,如果是整数用a-b的补,我们可以得出是呃,用a+-b的补啊。得到的是a的补加上负b的补嗯,是以它的模是以二的n+1次方为模的嗯,那小数部分是?啊,同理是a-b的,不等于一个进行转化啊,进行一个转化啊,它的模是以二为模的啊,这是一个整数的加法和整整数的加法。和这是我们加法的整数和小数的一个转运运运算公式,

还有减法的整数和小数的运算公式,好补码的特点是我们符号位是参与咱们的运算的哈。连同符号位一起,相加符号位产生的进位自然丢掉啊,我们连同符号位一起进行相加,如果它产生进位,那我们就把它丢弃掉。这是我们补码加减运算的公式,那么我们来看下面的例子,看下面的例子,我们要求啊a。等于零点一零一一啊b等于负的零点一零一零一。b等于负的零点零一零一,我们来求a+b的补,那么我们首先求出a的补码a的补码就是我们嗯。

它首先我们可以判断出a是一个正数,它的补码和它的源码是相同的。b是负数,它的补码和和它的源码是不同的,就是末位取法。呃,按位取反,末位加一得到的是。一零一一得到的是一零一一。那么,那么我们将a的补加b的补进行求和a补a的补是不是加b的补?等于一个嗯。一一加一零啊,进一位,然后得一,

然后再进一位,然后再进一位啊。进到这一位的时候,然后得到的是一零点零一一零好,那么我们把最高位是怎么着?符号位相加之后,如果有进位的话,我们要丢弃啊,把它丢掉。得到了a+b的值啊,那我们a+b的值在对它求值,对它进行啊,求原码的话,我们得到。它呢?

它是一个正数啊,5 a+b=a+b的股,它和它的原码的值是相同的,因为它是一个正的啊,我们嗯。进行验证一下,进行验证一下啊,进行检验啊,我们得到的话是同样的结果,同样的结果,一点一零一点零一零点一啊一。这一位把它进行这一位减去之后,然后得到的是相同的,我们再看。我。

我们接下来再看,如果设a=- 9 b=- 5,我们来求一下a+b的负九,那这里我们啊a和b都是负数,我们求和的过程当中是什么啊?进行一个。求解,我们进行一个求补,得到的是AA是这个数b是这个数,我们把它进行求和得到的是这个数啊高位进行丢弃。分析完之后,我们得到a+b的图,然后再把它进行转化,我们知道得到了a+b的图是一个负数,然后把它进行求反嗯,

得到我们的。a+b的值得到我们a+b的值进行一个验证。好,我们接下来再看一个例子啊。咳咳。接下来,我们继续往下看啊,看这一个题,如果设我们的机器自长为八,还是一位符号位a=15 b=24,用补码求a-b,用补码求a-b,我们首先。a与a和b转化成二进制的表示方法a的补我们求出来b的补我们求出来啊补码呃用原码怎么求补码我们嗯。就按位取反末位加一啊,

在这里是正数的话,我们都是一样的相同的。那负呃负b等于什么?负b等于什么?好,我们把它进行求呃,求出来之后是这个值,然后我们把。a的补加上负b的补得到的是这个值啊,然后得到这个值之后,然后我们就得到了a-b的补a-b的补,然后再进行求它的源码,就从而得到了咱们的。负一零零一=-9啊,这些之间的运算,

如果说我们同学们前面掌握的不够牢固的话啊,还可以再回去看一看咱们之前的讲解啊,怎么样?是由源码去求它的补码啊,怎样去求它的补码,然后进行一个换算啊,这是我们计算当中经常用到的,而且也是我们经常嗯考计算题的时候会进行转换考到的,所以说前面咱们。不牢固的同学再进行看一看,再进行课下,再进行一个学习哈,如果说我们是一个小数的话,我们用一个小数练习啊,怎样进行求嗯,

用补码求x+y。除x+y我们一样的一个道理哈,我们先把x和y进行一个二进制的表示,然后求出它的一个补码来,然后进行一个加法运算,加法运算之后我们求出来它的。补码我们可以看到嗯,当小数的时候,我们得到的数是得到了我们两个正的啊,两个正数我们结果求出来得到了一个负数啊,这是怎么这是一个错误的结果,为什么呢?我们下面会讲到啊,当时呃基期正常为八,然后一个负的97,

那么a的负的97b的正的41用补码求a-b。分化这个a-b,我们进行一个求解运算,我们得到的一个结果啊是。高位进行舍弃,得到结果,同样我们两个,我们一个正数和一个负数进行相加,得到的一个是什么是正的啊?我们这里的负数的绝对值是大于正数的绝对值。所以它的符号位应该和它负数的符号位是相同的,应该是一个负的,那这里得到的却是一个正的啊,同理,它是出现了一个错误啊,

为什么呢?我们接着往下看。啊,这就是因为我们出现了一个溢出啊,出现了一个溢出的情况,出现了一个溢出的情况,我们怎样去判断它的溢出呢?嗯,我们可以看一看。那可以看一下这里啊,如果说啊,这是一个负这是零的位置啊,这零的位置,这是正数区,这边是负数区。

这里有出现了上亿,这边负数比负数还有小无限接近嗯,于是出现了一个下移啊,出现了一个下移,这零一二三负一负二负三负四啊。我们只如果说将呃三进行加一得到四啊,我们就是得到了一个四,我们就会给它一个加一。我们如果把三+1位啊,加一位的话,我们就会呃一发出现一个溢出的情况啊,到了这边啊,在这个过程当中只有正数和正数。相加的时候才会出现上亿啊,正数加正数啊,

首先出现一个负数的情况,等于负数啊出现了一个负数情况,它这是一个上亿,如果说负数加负数啊,我们负四,再加上个负一。啊,他就会出现一个啊。得到一个正数,得到一个正数,才会出现一个下移,得到一个正数啊,异号加法是不可能溢出的,异号加法不可能溢出,只有正数加正数才会出现上亿,

只有负数加负数才会出现下移啊。啊。所以这是我们的一个溢出的判断啊,我们溢出判断的时候,我们有两种方法,一种方法是移位符号位判判断溢出啊,硬件的实现最高位有效位。的进位啊,与符号位的进位是进行一个异或运算,进行一个异或运算来判断它进行溢出,如果说啊一。和零进行一或运算等于一啊零和一进行一或运算等于一,它是有一个有益处的哈零和零啊等于零,然后一和一。嗯的零是没有溢出的,

也就是说我们只有是正数加正数和负数加负数的时候才会出现溢出,如果它是不同的啊,如果它不同的,它会就呃是是那个就会出现,就不会有溢出啊。异号是不会出现有溢出的,这是我们移位不报位判断溢出的情况,比如说我们看这个例子。看看例子啊。x的补加y的补我们进行嗯,它是一个同样是一个正数,同样是一个正数进行一个相加求和,然后我们出现了一个溢出啊,它得到的是一个负数,得到的是一个负数,

出现了溢出。然后如果说是相同的两个负数进行相加,我们结果运算完之后得到的是一个负数,那也是出现溢出的哈,如果说我们呃负数和负数嗯。进行一个运算之后,我们相加得到的是一个正数,那就是没有出现溢出,这是我们的一个溢出,还有没有溢出我们的一个情况判断?好嗯,第一种嗯,第二种判断是两位符号位进行判断溢出,那先判断溢出将两个操作数的补码都增加一位跟原来相同的符号。我们将两个操作中的补码增加一个跟原来相同的符号,

一起参加运算,结果呢,双符号位相同啊九位。溢出结果双符号位如果说不同,我们就是说溢出啊,如果相同就是没有溢出,如果不同就是溢溢出,这里的双符号位啊,这里的双符号位嗯,这里的双符号位。符号位如果说是不同的话,我们就是没有溢出呃,不同的话就是溢出相同的话就是没有溢出嗯,最高符号位表示其真正的符号,但是如。

但是否溢出要看次高位是否与之相同,我们的最高符号位代表是它的符号位,但是否溢出呢?就要看它次高符号位是否和它相同了,这两个如果相同,为什么没有溢出这两个?如果不同的话。就是有溢出,那我们看这个例子嗯。已知x已知y求x+y那x的补码是这个数xy的补码是这个数,我们将。它的那个符号位进行了一个加了一个符号位是吧?双符号位来表示啊,这两个求符号相加得到的是这个我们的符号位是不同的啊,两个符号位出现了零一表示已经溢出了。

那应该结果大于一,刚才已经说了,是不同的,就是大于不同,我们就表示溢出好,比如说我们x等于这个y等于这个求x+yx的补码是这个y的补码是这个。好,我们将x的图加上y的图得到的是啊,符号位置当中。高位舍弃,因为一个舍弃,然后是零一和零啊一和零出现了两个符号,五位出现了一零,表示已经溢出啊,表示已经溢出了,

那不同的表示溢出。就是我们的嗯,符号会那我们接着往下看啊,我们因为出现了溢出嗯,咱们嗯,符号进行怎样的扩展?嗯,那好,我们接着看符号的下一个知识点,符号的困难。我们将短数据变成咱们长长数据是怎样来进行嗯,扩展的啊,怎样去扩展的将八,比如说我们将八位变成16位啊,正数的话啊。

这如果是正数的话,它的原码反码和码表示的都是一样的啊,这个是八位的,我们把它进行呃扩展之后,然后前面是补零呃正数的话是。啊前前面补零和高位补零,如果是正整数的话,是高位补零,如果是正小数的话,我们是在它的末位补零啊,它的补码含码原码都是一样的,如果是负数。的话,我们的源码啊源码是这样表示的啊。符号位在这里,

然后在符号位的后面,然后进行一个呃呃补零进行补零呃,如果是负小数的话,我们是在后面进行补零的呃反码,然后进行。反码我们的呃,反码是进行取反的操作,我们补的是一个一啊,补的是一补的是一,然后补码的话,补码的话,我们可以通过前面的判断是对反码进行。好按嗯,对反码进行末位加一的操作,末位加一的时候,

如果说它的它的后面的一位是一的话,它就会进行变成一个零,它和它的原码是相同的,而这一部分和原码相同的,而这一部分的话。和它的啊,什么和它的反码是相同的,和它的反码是相同的,因此在这里呢,是加一好在这里是加一好,我们如果是小数位的话。如果是小数位的话,那这里它和它的源码是相同的。那前面啊,前面和它的一个补码是相同的啊,

和补码是相同的是一样的,因此我们定点小数的扩展符号,扩展是在原符号位。和数值后面添加新位正数都添加零负数原码啊,负数的原码补码添加零零负数的反码添加的是一负数的反码添加的是一好定点。整数的符号扩展是在原符号位和数字中间加新位啊,原符号位和数字中间加新位正数加零负数的原码添加零负数的反码,无码加的是一负数的反。买码补码代表是一嗯,这是我们的符号扩展好嗯,那个我们可以看出表示的,它表示的数字范围和精度都有了一定程度的提高嗯,但是它可以。可以一定程度上避免咱们的溢出啊,精提高了它的精度,

我们可以一定程度上避免溢出,这是我们这节讲到的加法。运算。加法和减法运,这是我们这一小。这是我们在小节讲到的加法,加法,减法运算和我们的溢出判断。我们来回顾一下哈,加法运算当中,我们讲到了原码加法和减法运算啊,原码的加法运算。如果是同号相加,我们就将数字同号相加的话,我们将数字部分啊,

等于被加数和加数的绝对值进行相加啊,如果说呃,它的符号位是不变的。符号相加啊,符号为不变数值部分的被加数和加数的绝对值进行相加啊,如果是异号相加的话,数值部分就等于被加数和加数中绝对。绝对值更大的绝对值,减去更小的啊符号位,它与它的绝对值更大的数相同,减法操作的话是将减数取负变为一个加法,减数取负变为加法补码啊,我们补码总是要。转变成加法啊,符号位参与运算,

我们无码是要把咱们的呃操作转化成咱们的加法操作,然后符号位。补码在补码的运算当中,符号位是参与运算的啊,溢出的判断我们怎样进行判断溢出,我们有两种方法。呃,有两种方法啊,有两种方法,我们要掌握的呃,关键点如果是正的加正的出现一个负的情况出现得到一个负数情况,出现了上亿负的加负的出现了一个正数。这个情况出现了一个下移啊,出现了一个下移,我们采用双符号位的时候,

如果是正数符号为零零啊,负数符号为一一啊,双符号位啊,正数符号就为零零,加了一个符号位啊。好加法运算后,如果说双符号位啊等于零一,则发生了上移,如果说双符号位等于一零,它就发生了一个下移,可能出现了这个溢出的情况,就是我们如果两个符号位相加。啊,两个符号位相同,没有发生,

就是我们没有发生溢出,如果说我们一经操作之后,两个符号位相同都是零零或者一一数是相同的,那我们就是说它没有发生溢出,还有我们讲到了d。四个知识点是我们的符号扩展啊,在符号扩展当中,我们讲到定点整数的符号扩展呢啊,是在原符号位和数字位中间添加新位啊,正数是加零负。负数原码加零啊,负数的反码补码是加一,避免小数的符号扩展啊,在原符号位和数字后面添加新位正数也是加零负数。的源码什么填零负数的反码填的是一好,

这是我们本小节当中的第二个知识点啊加法。啊加减法运算和溢出判断的主要内容啊,同学们要着重的去掌握理解啊,并且会进行一个运算。啊。


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

本版积分规则

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

GMT+8, 2024-4-30 20:36 , Processed in 0.074715 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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