00:00
好,同学们,现在我们有了这些知识点过后呢,我们现在再来看它的位运算和一位运算,勾浪中有三个位运算,我们刚才已经讲过的按位语,按位或按位异或它们运算规则我们再回顾一下,安位语就是说两位全为一,结果为一,否则为零。清楚了没有,安位或呢,是两位有一个为一。结果为一,否则为零,二位抑或就是两位,一个为零,一个为一,结果才为一,否则为零,清楚了吗?好,现在有这个知识点过后,我们现在再来看这三个题,OK,就轻松很多了。来,我们一起完成这个题。这个时候呢,老师一边讲,就给大家举这个案例了,好,我把这一部分先把它放到笔记里面来再说。注意听啊,这一块呢,我们现在真的开始要动这个位运算了啊。这个时候你学完了过后,你整个整个对计算机的理解一定会上一个台阶啊,这是老师说的,一定会上一个台阶来吧。
01:01
我们看看是不是真的能够把它拿下。好,我把它分分割一下啊,分割一下。这个是它的运算的规则。标成一个主体啊,我们来完成这个作业。好,我们来做这几个题。好的,我们来完成啊,案例练习。案例练习。来一起来完成,同学们,那现在呢,我们就针对啊,就针对这几个题,我们看看它,它到底等于什么,我们先不要去用计算机运行,我们来分析一下。注意看。他说,二。与三等于多少,二或三等于多少,二抑或三等于多少,来我们一个看。那么这个时候呢,我们要打开一个Excel表,我们一起来分析。注意听来吧,第一个呢,他说求二与三,首先我们知道,嗯,在计算运行的时候呢,他们都是以补码方式运行的,所以说我们先求出二的补码。
02:09
二的补码能求出来吗?同学们其实很轻松,因为呢,大家都知道二是一个正数,所以说它的补码和原码一模一样,马上就推出来了,所以它二是正数,所以说000000。一。推出来了,没有三的补满。注意看三的补满。三的补码呢是。一样的,它是正数0000,好,0011,没问题吧,好与。二。呃,他们语啊语,他语的话,这个规则大家能能推出来吗?他们一语的话,整个这个结果应该是等于多少。推一下同学们。你看啊,雨都是说只有都为一才为一,所以说这个地方就应该是00000010。
03:01
好,这个看出来了没有。最后这个结果你看就它与出来这个结果是它这个你把它翻译成十进制应该等于多少,二结果已经出来了,就说二与三,二二与上这个三过后呢,就谓语啊谓语三应该等于二,看看这个结果对不对。来吧,我们还是建一个DEMO4。呃,DEMODEMO久了。DEMO。De de demo09。好,我们来试一下这个到底对不对。来建一个main点构。然后呢,我们拿一个代码的一个骨架。好,这段骨架我们拿过来。放到这,我们来看看这个结果跟老师分析的是不一样的。好,我们写一个未运算的,未运算的测试演示,刚才呢,我们分析了一个。点print人找。我们直接执行啊二啊二与三。
04:03
我们分析出来这个结果应该等于二,我们看对对不对啊,同学们,我们打开一个。这个终端我们来执行一下,找到我们这段代码所在位置,CHAPTER04,找到零九里面有个main点够没问题吧。什么地?那我们go run一下,Go run main.go回车。我们可以看到这个结果等于多少,是不是就等于二?跟我们分析的完全一样。完全一样,没有任何毛病,那下面呢,我们紧接着再来看下一个话题。二货。二或三,我们再来看这个等于多少呢?一样的道理,还是把这个给我找过来。没问题吧,好,现在是二或三。如果二或三的话呢,同学们看二或三,就是只要有一个为一就为一,他说等等等啊,零零好,这个是一一,于是这个推出来是多少三?
05:03
没有问题吧,所以说我们再来看一下它的结果是不是。嚯。或一下过后我们发现这个结果呢,就应该是什么执行一下。是不是你傻啊?一个是二,一个是三。没有任何问题吧,出来了,所以以后在命运的这个练习题就没问题了,我们再看还有一个要求是什么,看一下还有一个要求是。抑或二,亦或三。好,我把这个呢粘过来。也给同学们来做点演示。好,同学们,放到这里来啊。放到这里来。那同样道理,也把二和三的补码先找到。二和三的补嘛,先找到以后我们来进行一个抑或。那二一,呃,一或三,那这个结果应该是多少呢?首先看都相同才相同啊,它两个都不相同才等于一啊。
06:00
这个零零好,这个零一。因为你这个地方两个都为一,是不是就取零了,那这个结果应该是等于多少呢?等于一看是不是这样子的。来走一个吧,我们把刚才这个呢再写到这里面来。好,二亦或三,二抑或应该是上面有个向向的箭头在六这个位置啊,不要写错了,我们再执行一把,它应该等于一。看一下对不对。没问题吧,231完全的OK,完全好,那那有些同学老师你这个取的都是正数,咱们负数来一个行不行呢?好,其实复述比较麻烦的啊,但是呢,为了让大家听懂呢,我们再出一个相对麻烦一点案例。负数的。来人我们来看,如果是负负一或者负负一,抑或。抑或一个三,或者一或一个二,这个等于多少呢?这个就。
07:01
相对难一点了,因为这里有负数了,大家都知道负数呢,它不是直接它那个补码呀,和它的源码不一样,因此呢,你要重新推一推,来我们看一下这个负数,这个稍微麻烦一点,我们举一个麻烦一点案例比听。这时呢,我们就把它彻底搞懂。那首先呢,我们先找到负二的补码,哎呀,负二的补码可不容易啊,咱们得想一想,负二的补码等于多少呢?好,首先。我们先把负二的源码找到具体负二的源码。负二的源码是不是一。0000010了。这是它的,这是它的源码。源码负二的源码是这个,但是负二的要求它的补码是不是要先把它的反码求出来。是不是要先把它的反码求出来,能理解吗?反码反码的话就是符号位不变,其他都变。其他位变,但是符号位不变啊,111。
08:03
1101,看出来没有?没问题吧,紧接着再求出它的补码,为什么要求补码来说,因为它在运算的时候,它是以补码运算的,因此你必须先求出补码,补码是反码在基础上加一。加一就是1111。幺幺。幺零看出来没有,所以说负一的补码就是它看到没有,好紧接着呢。二的二的补码,而二的补码其实还是比较容易的,因为二呢它是正数,所以说它的补码一下就到位了。是0010。好,此时此刻他们抑惑,他们抑或的话,其实就是用这个码,用这个补码和这个补码进行抑惑,能理解吗?也就是说,说白了就是。要拿这两个字进行疑惑。不能拿它的源码啊,不能拿负一负二的源码,这两个进行一货好,一货过后我们看结果是多少。
09:03
追星。好,他一会过后,这个结果应该是这样子的。抑或过后啊,抑或过后这个。亦或就是不一样。两个不一样才取一对不对,两个不一样才取一好,我们可以看到同学们看它一旦抑或了。一零抑或出来是不是就一啊,因为他不一样嘛。111,好,再来这个呢是多少?一和零又不一样,一和零又不一样,这两个相同,零一呃,零呃,这个零。不对。这个是一零,这个也是一零对吧,所以说一或完了过后是这个结果就是负二。亦或上这个东西过后呢,它的结果是等于老师给你们看到这个东西,但是我告诉大家啊。看这个书什么书。这个是个负数。
10:00
如果你如果你把这个直接拿去看还是不对的,因为这个地方它处理完了后,他仍然也是一个补码。他是不是还是补码,你要去看到底它到底是多少,你还得把这个补码返回成什么源码才对,所以你看复数在里面就很麻烦,但是呢,一般老师在这就躲过去就不讲了,对不对,因为比较麻烦嘛,但是呢,我们既然要讲就把它讲透,你看这个地方,你不能直接看这个值,说哎,老师我我把这个一查,它不就等于呢,你看你如果用这个去看啊,你你说这个就是它的负数,那你这样算。那就不对。因为他是个补马。补码你是不能够拿补码去看的,你要看它到底是多少,你还得把它翻译成源码,能理解吗?那怎么把这个补码翻译成源码呢?也很简单,你首先把这个给我翻,把它的这个反码给我找出来,然后再找出源码,能理解吧,所以说这个地方呢,先推出他的反码。
11:00
注意我问大家一个问题啊,你的反码到补码四加一对不对。那反过来补码。转成反码是不是应该减一啊?是不是让这个补码减一就得到反码了?能听懂我在说什么吗?好,那就说我要推出它的砝码就是减一,减一的话我们看怎么减啊,那就是1111,这个不动幺幺。好,这个还有点麻烦,我们看减一下,一减一的话,这个地方肯定要进一位过来。这个就变成零了。我直接看了啊。这个地方两个一。看是不是这样子,就说他的这是这是这是补码,补码变成反码过,在这个基础上减一。它实际上就是在这个地方减一,减一的话就是这个了,然后呢,再把这个翻译成源码。这才是我们真正看到的这个值。那源码怎么看呢?朋友朋友们哦,源码我们说的是符号位不变,其他取反,那反过来也是一样的吗?那就说符号位不变,其他取反。
12:09
零,这个一变零零变100,好,最后结果已经出来了,等于多少,看出来没有。是一个负数,负几呀。负姐,负四。你能想到是负四吗?也就是说负二抑或二,其实它是负四。他不是我们相对那么简单啊,那我们我们这样推导过他到底对不对,还是一个问题呢,是不是你跟老韩老韩老师说的,如果不对,那不是我们就瞎了吗。如果这个不对,说明我们整个这个机制都是错的,那就麻烦了,那我们看看负二一或二是不是跟老师推导出来这个复试是一样的呢?好,我们来验证一下,走起。我们可以看到他的的确确是不是没毛病。说明刚才我们整个分析是完全OK的,好,当你把这块都搞懂的时候,我告诉大家,你的二进制基本上就上了一个台阶了。
13:06
啊,而且我这举的这个例子就是相对比较麻烦的一个案例了,能理解吗?好,我把这几个题的这个分析给大家整理到笔记里面来。好,最后这个结果啊,我们把它整理一下。好,最后这个结果是233,这个是多少,这个是负四,是这意思吧。好的,然后我先把这个题拿过来。把我刚才分析的那一个图也给同学们放到笔记里面去,大家好好的消化一下。好放这就没毛病了,然后呢,我们具体的这个代码是怎么来的,我做了一个分析。啊,这个分析是很重要的啊,同学们。我把这个分析的图也给大家拿到这儿,那我画几个大块,一个是求的二。二谓语三。
14:01
二为霍山。二。一为一或三是这么来的,最麻烦的我们讲的是这个。是不是就是负二?亦或未抑或二?这是怎么来的?我们先求出负二的。补码,然后这个补码和二的补码进行一个抑或,抑或完了过后拿到的结果是他。抑或完了过后,同学们看到我们拿到的结果是这个值。但是这个只是个补嘛,我们要把它推出源码,怎么推的呢?下面这样推的好,同学们把这好好理解一下啊,把这个理解完了过后,我可以负责任的讲你的二进制,就说百分之七八十就。没问题了,甚至八九十都没问题了啊,所以这块呢,同学们一定要好好的去理解它的这个原理,让你的整个对计算机的理解上一个层次。好,这是我们讲的叫做什么呀,三个位运算没没问题吧,紧接着呢,我们还有一点尾巴,这个就比较轻松了,叫什么呢?高浪中的两个移位运算,移位运算就是我们说的位右移或者位左移,这个简单。
15:12
因为你在前面已经有了这个基础,过后你再去看这个就跟玩似的。真的是跟玩似的啊,这不是开玩笑,那么我们再把这个两个位移运算也给大家讲到这里来。好,把这地方一样的给大家补到这里来。来了。好老师把这块走一下啊,注意听。把它放到。里面去高那有两个一位运算,其实一位运算也算是位运算啊,只是我为了区分呢,我把它呃分开说的。啊,这个叫。右移,这个叫左翼,那么右膝的规则是什么呢?是这样子的。右移的规则是低位溢出符号位不变,并用符号位补溢出的高位。左移呢是符号位不变,低位不零。
16:03
清楚吗?好,同样道理,我们来一个案例说明。案例演示。我们这举两个案例,这个就简单一点啊,同学们有他在进行这个右移,右移和左移的时候,依然也是遵循前面原则,也是按补码的方式来进行这个操作的啊,这个我就不再多说了,理解吗?好,这举了两个案例,我们看一下。一个是这个题。再说一遍啊,只要是运算都是补码。如果这地方这是个负一,你就要转成补码来去运算啊,那我们这个猜猜一下这个等于多少。大家想一想,这个一它的补码是多少?一是正数补码是不是就是000。然后是0001,然后向。右面移动两位,它怎么说的,第位溢出符号位不变,那不相当于把它顶出去了吗。它是低位溢出,这个低位零一就被挤走了,符号位不变,并用符号位溢出高位,那这个。
17:06
一一搞不就变成。000,好,最后这个结果就应该等于零,因为零是正数,所以说不用再回头看它的那个真正的源码,同样这个也是一样的道理啦。这个大家看一,先把一的补码给我找出来,一的补码是不是就是。000,因为它是正数。是吧,这个时候它要怎么走啊各位,它左移左移是符号位不变,低位补零,符号位是谁?零不要变。不要变,然后低位补零,那补零那就简单了,000那就是0010,因为它这个一要向前面进两位。零那时候还写错了,应该进两位,就是变成这样子了。大家看这个结果是多少,你看哦,运算结果还是一个正数,正数的补码和原码一样,所以说这个你也不用再去看它的真正的源码是多少,因为它就是正数。
18:04
它的补码和源码一样,所以说这这个这个符号位一看就出来出结果,如果这个符号是个一啊,那就麻烦了,你还得像刚才老师像这样推导一下明白吧,好。好的,那现在呢,我们这个结果其实一目而了然,等于多少啊,大家看出来没有,其实就等于正四。是不是这个道理,好,同学们,我们来把它走一个,看看对不对。把它放到这边来啊,同学们。走这是第一个对吧,我们还有一个把它输出来。看一眼。这个题。C。如果是负数的话,大家还要按刚才老师那样去重新重新去处理一下啊。好,我打印出这个A等于。A等于这个B。B等于好。那同学们看到,那现在呢,我们一输出,刚才老师分析出来,这个等于几等于零,这个等于几啊同学们这个等于四。
19:02
保存一下啊,没有没有没有这个啊,没有BC。C好,同学们看看这个结果对不对,一个零一个四跑起来。走。我们看效果一个零一个四没毛病吧。完全正确,好,这就是我们分析的这个结果好吗?啊,并不难,并不难。好包,包括这个分析,我们这已经写清楚了,好,同学们,那关于我们的胃。未运算的五个我们就全部讲完了。大家看看怎么样?我觉得应该还是讲的比较清楚了,如果你哪块没有听明白,你把这个视频再回头看一看就OK。那关于我们的运算符,我们就全部彻底的讲完。好,呃,大家好好去消化一下。
我来说两句