00:00
们讲的是计算机中数据存储的方式这块,是不是,那前面说了一句话,就在这这个二进制这里面说了一句话是数据在计算机中都是以补码形式去怎么的去存储的,所以说我们任何的数据都需要把它原本的数值转化,为什么转化为这个补码形式再去操作,是不是?那我们拿过来一个数怎么去转化成补码呢?首先先转成它的源码,是不是源码就是它的原始二进制码,就是将一个十进制转换二进制,就这么简单是不是?这个应该会了吧,上午讲课内容。那同样在这里面原码它也是有一定区分的,区分什么?正数的原码最高位是零,最高位是零,呃呃,那个负数的原码最高位是什么是一,所以说这里面在操作的情况下,你需要明白两点,第一点就是它的符号位是不是是这是第一点,第二点应该明白什么,就是这个数到底有多少个,这个大小是不是就是这个小B,有多少个小B,我好存放到多少个空间大小是不是,那这里面我们通过一个关键字,哪个关键字求出来的是这个在最后关键字它是做什么操作呢?就是求出来这个数据类型在内存中占占大小,那我们这个讲义里面已经有啊,是在什么呀,在32位操作系统中,我们求出来这个数据类型大小啊,这几个需要大家记住的啊,差是一个,短整型是两个,然后是in的是四个,Float的四个,Long是四个,然后浪浪八个,Double是,呃不是双金度福典型是也是八个是不是?
01:27
这个大小,那找到大小之后,我就知道该写多长了,是不是就是一个这个。一个数据的源码我就知道该写多长了,那我们这里面就是操作,怎么操作,就是把它求出来,就是它的源码是不是。啊,圆满就是简单易懂啊,就是数本身啊,啊,然后也可以去还原,还原怎么还原的,就是符号位就是符号位,然后是正原先的数,求一下变成十进制,就是它原先的数。那然后这种源码它不是不利于程序存储,所以说我们这里面改成什么,改成繁码。扫码怎么操作呢?是对于正数。
02:02
三码相同是不是咱就不用讲了,对于负数符号位不变,注意一下符号位不变,你在操作的时候注意一下符号位不变,区位取反,原本是一就变成零,原本是零就变成一是不是啊。那这样操作就可以了,然后这个是反码也不方便,通常只是作为这个补码的一个过渡来说的,然后最后再转成什么,再转成这个补码,那补码有什么样特点呢?正数全部怎么全部这个相同,三码合一,然后对于负数来说是。它的反码再加上什么?再加上一,是不是我们可以通过三步能求出来一个数的补码是一个什么样的值?比如说我们拿一个负数来说负十。那我第一步要求出它是什么,求出它的原码是吧,最高位符号位先把它放这儿,然后后面把这个数据给它放在这儿是不是就可以了,然后后来再求出它的反码,最高位符号位不变,区位各个被取反。补码对于他来说就是怎么呢?就在反码基础上再加一,得到结果就是这个值,它在计算机中存的就是这个值,但正常情况下,如果是一个整形的负十,在计算存的应该是这样的一个格式啊是。
03:07
呃,现在是八位是不是啊八位。16,不是不是十二十六。二十二四。2832,其实在这一中存的应该是这个数,是不是,我只是说因为这些都是一是不是啊哦,在转的时候可能都是零了是不?我就把它都怎么的都给它忽略掉了,明白吧,你就现在简单的看一下,如果你要看这个觉得简单,你可以看这个,这个里面是不是也是这样操作呀,啊也是同样操作啊,同样道理操作,那这个求来的就是它的什么呀,它的这个。补码是不是啊,那比如说这里面是什么呀?十加的是负20是不是呀,那也等同于什么,等同于一个什么呀,等同于一个十再减去。呃,负十再减去什么。再减去一个正数20是不是,但是。在计算机中是没有减法操作的,是不是我们以为这里面是减法,其实他把这个数当做一个什么看待啊。
04:06
当做一个加上一个加上一个负数来看待,知道吧,所以说我们那个就是减法操作的时候,其实在计算机中做的都是什么操作,都是加法操作,它没有减法,它算不了减法,知道吧,你以为他能算减法,其实它算不了,是不是他就把这个数作为什么,作为一个这个负数来看待,是不是啊。那乘法呢,乘法这里面算的情况下,它这个也是根据这种情况,但是那乘以那个数它就怎么就变了,是不是咱先不用考虑乘法,乘法那太难了,怎么去乘积啊,什么这个数啊,各个数乘积啊,那太太太麻烦了,咱先不考虑啊,咱只知道如果是加减法的情况下,它没它在计算机中是没有什么没有减法了,是不是啊,只是加上一个负数而已,因为那个负数在计算机可以以什么形式存在啊。啊,以这个补码形式存在是不是啊,这是它的这个过程啊,这是我们这个讲的这一块,那是三码合一啊,这个你可以去练习啊,比如说你自己去练习个数,自己去减一下,看一下这个他能否去减这个值。
05:06
然后给大家看一下这个补码的意义啊,说这个。补法有几种意义啊,是这这个先正零负零这个问题咱们先不说啊,等一会咱们在后面的时候,把这个正零负零这个问题再跟你说一下,取值范围的时候再跟你说这个问题跟大家说,不管以源码方式存储,还是以反码形式存储,零都有两种方式存形式存在,为什么两种形式存在呢?正零和负零是不是为啥呀?比如说我要存一个数据啊,是这样的情况存储的啊是。00000000,那你知道这一定是什么,一定是零是不是,但是最高位是符号位,所以说它应该是正零是不是,我先个加号写了,那比如说是一后面000000,这是什么?这是一个这个计算机中存储的数据啊,那它在转化完之后变成什么,变成这个是。负零是不是啊,那这里面零和负零这两个解释就是什么?就是相当于两个区间之前有有俩值,这俩值是怎么呢?相重复的是不是啊,但是我们把这个负零当做另外一个数,负的这个数据类型的一个大小,这个后面咱们再讲的时候再跟大家说这个啊,这是零,我们就可以相当于真正的零,负零就是相当于另外一个值,咱们后面再说啊。
06:17
这是第一点,第二点是如果使用补码形式,呃不是如果以补码形式方式存储得编码,呃得那个补码则统一了这个零的一个编码的一个过程,它把这个负零当做什么,当做这个一个数来去存储啊,这个是也是它解决的一个问题啊。那第二点就是两个数相加方式啊,很简单啊,就是咱们说那个什么,就是如果说这个两个数相减情况是一个错误的行为,是不是咱们说了吧,就是一个数减,另外数它是一个错误行为,它必须做成什么形式存在,它是以补码形式,然后怎么着相加,所以说咱们前面说的什么,说的是这个加法操作,来看一下这里面做了几种操作啊。第一个补码可以,呃,统一了零的编码,这是第一种,第二种是将符号位的运算与其他位的运算统一处理起来了,知道吧,就是可以做那个负数操作了那。
07:10
还有一点什么,还有一点是将甲将减法运算变成了什么法运算呢?加法运算,还有是用两个补码存储数的时候,如果最高位都是符号位,得进位的时候可能怎么的,可能会把这个符号位舍掉,所以说得到结果还是一个正确的结果,能明白吧,啊这是它的呃作用范围,呃,它的一个方式啊,有一点没给大家讲,就是正零负零啊,咱后面给大家讲这个问题,还有就是赛瑟负关键字这一块内容,咱们讲完了,咱保存一。
我来说两句