00:01
那好,那我们看一下这个计算机中数据存储的方式,那这里面分为三个,一个是什么?一个是源码,反码和补码这三个东西,那比如说我给大家一个数,那大家都知道给它转为什么,转化为这个二进制是不是啊,二进制就是它的什么,就是它的这个源码,那比如说我们这里面来个例子给大家练习一下啊是。随便写个数,比如说这个是1986,那你这里面不是1987了,那你给我转换一下,它的二进制为多少啊?是11111,然后000010是不是?那有同学问了说为什么你这个1986也能转出来呢?是不是1987减一,是不是1986了啊,是不是就这样?那我们知道这个数什么,知道这个数是转化为这个,呃,计算转化为什么转化二进制就是这个数,那他在我们计算机中存的也就是这个数,知道吗?那我看下源码的一个声明啊,说那个源码。啊,是什么呀?一个数的原码就是原始的二进制码,它有如下特点,就是什么呀,最高位是符号位,看到了吧,如果说是零,则表示是一个什么正数,那这个一表示是一个什么呀?是一个。
01:09
负数,那比如说我们这之前写的是正数,那情况下在我们计算机中存的是这样的一个情况,是不是,那比如说是一个负数呢,比如说是。嗯。负的1986,那它从一个是什么样情况呢?那那是这里面我们看一下这个它介绍说明说最高位什么,最高位是这个符号位,如果是这个。一表示个负数,那最高位一定是个什么符号位是不是,那其他位呢?其他位就是按照我们这个数据来进行一个计算,那是通过这个,呃,是。反码和补码来去计算出这个值啊,它最后存的是什么呀?正数存的是原码,我们也可以称为之为什么呀,正数的原码,反码、补码它们都相同的啊,后面在这个补码这有一句话说的,刚才说啊说这个是特点是什么?正数的原码、反码、补码它们都相同,对于负数来说它就有区别了,我们计算机中存负数存的是这个补码啊,这是我们第一个需要知道问题,第二个那我们这个数据,比如说这个是。
02:10
1986,那他在我们计算机存的是这么多的一个位置吗?那比如说换一个数,比如说这个是另外数是十,那在计算机中存的如果是二进制的情况下,应该存什么?存这个是1010是不是,难道存的就是这几个数吗?多的数就是存的多的吗?那这是我们思考第二个问题,那这里面就需要引出我们今天讲课的第二个内容就是什么?就是。整形数据,那这是不是一个整形数据啊,在内存中占的这个字节大小,我们先把那块知识讲完之后,再回头把这个问题梳理一下,那那我们看一下什么,看一下这个。程序,那我们通过程序来实验一下啊啊亚平,然后是VC呃是c.C啊这个程序啊,有个a.CB点是测点C了吧,啊待会给大家命个名啊,让大家好好好的这个理解一下。ncdstdio.h。
03:00
这是我们的同键,然后是主函数。定义一个变量int类型的A等于十,然后是答一下这个10PTF。百分号B,斜杠N,然后逗号一个A。Re return,一个零,这是我们正在前面写的一个程序,那我们在这个程序上面加点东西啊,这是什么?这是定义一个变量,这个变量是个什么类型呢?是一个in,呃,整形的,然后并打印出这个值,那我们这里面求的并不一定是打印这个值,而是我们有一步操作,什么是通过?呃,求出啊,这个它在内存中占的大小,就是这个关键字,大家前面已经了解了,就是什么?就是我们讲的这个是呃,Set off这关键字,这个关键字是什么用的呢?先跟大家说明一下,比如说set off,它不是一个函数,而是一个什么,而是一个功能,它的功能是什么?计算一个数据类型,咱们前面讲的这个什么啊,这个是整形啊,或者是这个字符型啊,以及这个浮点型,它们都是数据类型,而求出它的什么呀?求出它们在内存中占的这个呃大小啊,单位是这个字节的,那我们看一下它是如何操作的啊,可以是定义一个什么呀,长度啊,让它等于一个size of,然后后面加上什么,加上这个变量A。
04:19
我把变量A放进里面,这个A是个什么类型的?嗯,啊,整形的,那我这里面set off求出来就是什么,就是一个整形的数据在内存中占的这个大小,那我们先看一下结果啊,那在这里面再加上一句话。呃,插入一下,再打印一下PTF。这个length长度等于百分号D,斜杠N,然后把这个结果放放在里面去。好,我们保存一下,然后去执行一下。GCC-O。C的c.C啊,执行一下点斜杠C,执行一下我们这个程序,这里面得到这个我们定义的什么定义这个变量这个值为十啊,这是第一步定义的,第二步我们求出这个这个变量A在我们内存中占的字节大小有几个字节大小啊,四个字节大小,那这里面我们还继续需要往下看啊,去看一下这个字节大小这一块啊。
05:13
等一下啊,是啊,二进制,二进制还有些东西要说啊,说什么说这个看一下我们这个整个的二进制一个说明啊,是二进制是计算机这中广泛采用的一种数制,它一般情况下这个数据只采用零和一啊来表示这个什么呀,来这个数码来表示它的基数为二,就是从二进一,这个前面已经说了吧啊呃,借位借借一到二,然后是怎么样,就是进二当一是不是啊,这也说了,然后计算机中使用的基本上都是二进制这个系统啊,数据在计算机中主要以这个补码形式存在的,那因为这个什么,因为正数的原码反码补码相同,所以说我们说那个正数是以源码形式存在的,也没有错啊,这个这里面告诉你了,说计算机中数据都是以补码形式存在的。那我们就需要看一下这个,呃,计算机中这些。
06:02
啊,内存中这个大小分别什么样的一个程度啊,看一下这里面什么,这里面是小比特,看一下小就我们称为这个小B啊,一个二进制位代表一个什么,一个这个小B是不是啊,那我们一个这个大B一个字节里面有几个小B啊,有这个八个小B,那我们这里面刚才看的这个赛道求出来这个是什么,是这个四,那这个四对应的是这个是字节大小,就是byte这个什么呀,这个。嗯,这个大的这个值看到了吧,这个是,呃,我们这个一个大字节里面包含小的是八个比特,所以说我们这里面。一个int类型的大小应该有多少个这个小的比特位啊,32个是不是我们要如果要写的情况下,比如说我定义个什么,定一个int类型的这个A等于这个是A等于1986,那它如果以二进制形式存在情况下,应该怎么的,应该是这个数是它的这个原来这个值吧,应该加多少个这个零啊。
07:02
就是咚咚咚咚咚咚咚咚咚咚啊,不够32位,那假如说现在假如说就已经够32位了啊,那这个它才才是他在计算机中存的什么呀。存在这个数据啊,不能说这个源码方法方法咱还没涉及到那样,只是说这样情况去存储,那如果是这个十的情况下,那也是同样的道理,那怎么着把前面全复制一下是什么是这个。啊,全给他改成这个是。00000,然后后面这四位改成什么1010啊,假如说这是够32位的,你先不用去体去查啊,那这样是存储什么,存储的一个是一个整形的数据,能明白吧,那这里面再跟大家说一下什么,说一下前面那个问题就是这个。呃,源码这那源码这这这最高位的情况下,那你就知道哪个是最高位了,是不是最前面这个最高位了吧,啊这样情况下才是怎么着才是能表示一个int类型的数据,它不是说你这个这个数据多大,它就存多大一个位置,而是什么,而是这个它会根据你这个不同的数据类型,它存在这个大小也不同,知道了吧,那这里面假如说这有32个这个32位数,那这里面情况下,除了最高位是符号位,其余位数都是什么,都是这个我们称为叫数字位,最高位称为叫符号位,就是把什么。
08:15
这里面写一下是将。一个。有符号啊,是有符号能知道啥意思吗?就是有正数,是不是也有负数啊,啊这一个有符号的整形数据。整形数据可以,呃呃,就是这样,不用写降啊,是一个有符号的整形数据,可以分为两部分。一部分。一部分是。符号位,符号位就是什么最高位吧,是不是如果是零的情况下,那在那知道这个数是个什么数啊,正数如果是一个一的情况下,那证明这是一个什么负数,那正常情况下,那就是我们知道这是第一点啊,是一个呃,是一个有符号的整形数,可以分割为两部分。
09:04
呃,是一部分是符号位啊。一部分是。数字位。数字位就是包含它的这个具体的一个值的是吧,然后不够的情况下,是在这里面加上空格啊,不是不是加空格加上这个什么零啊,那好,那我们知道这个,首先第一点我们知道什么一个整形啊是什么,是一个四个字节大小,这个字节大小对应的什么,对应的是这个。啊,我们这个是大B知道吧,一个大B里面包含几个小B啊,包含这个是八个八个小B啊,那一个小B代表一个什么,一个二进制位知道吧,那就是说我们对应的一块内存,以后说的内存的时候都指的是这个大B知道吧,那里面包含八个小B,比如说我定义一个字节大小内存,那一个字节大小对应的是哪个,是不是说的是这个啊,这个是大家明白了,然后这里面还有几个,这个需要了解知识,咱们过一遍就行啊,这是不是不是重点内容,咱们看一下啊,Word代表一个什么叫双字节,那我们一般都知道这个一个汉字就是怎么呢?就是啊两个字节就是两个这个小币大小知道吧,那我们叫做双字节,那双字节就是如果说转成这个比特位情况下,就是多少位啊,16位了是不是那二乘乘二乘这个是八是不是等于16啊啊这有个底,Word就是什么double word就是这四个字节就是什么32位了啊32位。
10:25
那这是我们正常情况下有什么有这个小B对应的是哪个,是这个字节大小吧?啊然后是大B,那指的是我们这个字节,那一般情况下我们看下载的时候下载知道吧,那下载都是下载是哪个东西啊,下载是不是都是大B啊,比如说你这诶我那个软件呢。杀毒软件呢,怎么怎么那个那个图标没了呢。右键能显示出来啊。右键。加速,文件关了再打开。来加速火箭,如果你能看到加速火箭的时候,就能知道怎么的,只能是这里面传输的数据都是什么,都是这个以这个B形式存在的,那如果你这个看不了情况,那你也可以用通过其他方式,那是打开任务管理器,然后我们这里面选择这个是。
11:13
选择这个网络看到了吧,你看网网络情况下,这里面这个是多少多少多少KBKBKB是不是这个B就是这个指的是这个是。正常情况下,这个是大B的这个值啊,是自己的这个大B的值啊,那正常情况下,这里面显示大B,这里面显示是小B啊,应该知道,那同样的再跟大家说一下,比如说这个我们这个带宽知道吧,比如说你这个是百兆光纤,百兆光纤或者是这个都是这个传输的时候,它是以大B小B传输的。啊,这其实是以什么以这个小臂传输的,那为什么是以小臂传输的呢?比如说你办一个叫百兆网,是不是最大下载速度能达到多大多少啊嗯,这里面不是十兆,应该最大应该是10:12点五兆吧,12.5兆为啥呀?啊这个这个值再除以什么,除以这个是100除以八吧,是不是除以这个就是一般情况下,这个是你在这个这个是联网,那个是公司网络公司它告诉你都是什么,都是一个小B的,知道吧,你就100兆,百兆这个网其实它最大的下载可以只有多少,只有这个12.5兆,那咱们这个兆是根据这个来怎么的计算出来了吧?啊,它得除以一个什么,除以一个八才可以,这是我们自己,然后这个是呃,1024个字节就变成什么了,以KB了吧,啊这个KB这个B指的都是这个字节大小,然后这个。
12:32
1024KB就得到什么,就是我们说这个是一兆是不是,然后这个。一兆,但是1024兆,就是我们所说的什么G吧,是不是几G几G的,那一般情况下,我们像我们这个。电脑硬盘都是按照这个G来存储的吧,多少多少G是不是一般情况下,现在如果是在多一点情况下用什么呀?用这个T,那这个T一般情况下用在哪儿呢?用在这个。啊,服务器上用的这个比较多是不是啊,比如说我这个这个服务器您弄小点它也装不下呀,是不是,比如说尤其在上传的这这些东西是不是那数据上传到是比较小了,比如说这个上传图片呢,作为什么头像啥的,这个里面是不是就比较多了,是不是?而且还有一些是网盘,专门的一个网盘知道吧,就是什么百度云盘呢,或者是这个320云盘呐,是不是,那里面这个装的是不是就更多一点了,是不是,但是它也有一些优化算法,知道吧,比如说你上传一个文件,它上传一个文件,这俩文件这个有一个叫MD5码,是不是你下载的时候它也会有这个MD5码,是不是,如果这俩码一样,他就认为这个服务器上已经有了,是不是,然后他就把这个东西你上传这东西怎么的,就不用不用上传,说这个服务器已经有了,只是把它那个地址再拷贝到你那个地址下面一份就可以了,是不是在服务器里操作要比你上传操作要快很多是不是?
13:45
这都是那个服务器做的事啊,这是我们这个基本的术语,那我们了解一下情况,您可以自己去看一下,在这个二级制里面啊,自己去看一下就可以。那我们再回头来说什么,说这个set of关键字啊,那我们求出来第一个什么,第一个是这个。
14:00
In的类型大小是四个,那我们再求一下其他类型大小看一下啊vc.c啊,这是我们讲的第一个数据类型,叫int数据类型,那除了那个之外,我们这里面还有很多其他的这个数据型,比如说什么,比如说我要定义一个浮点型,那浮点型大家知道是哪个吗?就是我们所说的是个实型啊,我们叫浮点型。五。浮典型啊,浮点型有两种啊,一种是叫单精度浮点型,另外一种叫什么双精度浮点型,那我们先定一个叫单精度浮点型,就叫lo塔,那让这个这个是变量上等于什么的,这个等于B,然后可以设值,这个值可以设为3.1,呃,不是3.14。这是一个什么浮典型浮点型,后面可以加什么小数点是不是啊,我们可以通过这个关键字,哪个关键字这个是size of,然后后面加啥加上这个呃,变量B或者也可以加什么,也可以加上这个float,都可以求出来什么它的在内存中占的这个字节大小,那好我们看一下。这个改一下名啊,比如说这叫呃LES1,然后再改这叫什么,这叫LES2啊。
15:05
In类型的LES2,那我定义这俩变量可以吗?一个叫LES11个叫LE2,这俩是一个变量吗?不是啊,这是两个不同的这个变量啊,只是它俩很像而已啊,呃,Set of。B啊B,那求出来是什么?求的是这个浮点型,而且这叫单精度浮点型,在内存中占的这个字体大小是不是,那好,那我们在这个下面去求写一下啊呃,PRNTF。这叫LES1啊,或者我们直接写什么,直接写这个叫int类型大小,是不是这样也很容易懂啊,这叫float大小,让它等于一个百分号D斜杠N,那你看一下我这两个都是什么,都是这个。呃,写下面写错了,都是以这个百分号D来去作为什么作为占位符来接入它,那所以说我们这里面还需要注意一个东西,就是什么再关键字求出来这个值是一个什么类型的啊,是不是对应的是一个int类型的,那这里面有啊,我们看一下这个size of关键字,它求出来反回句类型是一个什么。
16:05
Size-T类型的,呃,这个S-T是一个它自己独有的这个这个什么这个类型,其实它这个下面还有对他一个解释啊,是在32位操作系统,它是一个什么无符号的int类型,所以说我们直接可以把它作为一个什么,作为一个int类型来看待,知道吧,所以说这里面在写的时候,我也不需要怎么的,不需要给它去转化什么这个S-T类型直接写就可以了,看了吧,那么求出来这两只,一个是int类型大小,一个是float类型大小,我们再看一下,保存一下。对。啊,有错误啊好,那我们改一下啊vc.c啊,加一个少一个什么少一个根号我们加呢。好保存一下,看现在这里面我们求出几个了,求出这个两个了吧,一个什么,一个是这个int类型的这个。内存占的有自己大小,一个是float,那下这两个值都是几啊,都是四,那如果在存的情况下,那这里面无论是in的外型还是float的类型,占有的位数是不是都是都是多少个,32个啊,32大小,那那我们再把其他的这几个数据类型也写一下,都有哪些数据类型呢?我看一下,呃,Int,然后是差,然后是这个,呃,Float里面有什么double,然后以及这个in里面有这个short in long和这个long long整体给大家去写一下,看这个站在这个字节大小每个都是多少啊,然后我们去记下笔记啊。
17:21
好,这里面再整体的写下代码,诶弄错了。vic.C。好,这里面有什么,有这个是int,然后是float,然后再往下继续写啊,这是。第三个是。啊,叫字符祥。我们称为啥称为叫差是不是,那定义的变量就顺序往下写了,C让它等于什么,等于我要想表示一个字符的情况下,用单引号引起来注意一下啊,那这里面比如说写一个什么,写一个大写的这个。呃,大写的这个字母A啊,你看下我当时写这个分号的时候,我就知道这个错了,为啥呀,因为这是中文状态下的,这记记住一下啊,这个中文状态下,这个分号在这里面是不可以用的,你需要注意一下啊,然后我们同样再求说一下它的什么,它的这个大小。
18:14
啊,Int类型的这个LENGTHS33让它等于什么?等于这个size of c,这是字符型的,咱们一会儿再往下面去加,然后再加一个其他的字符型的,加完然后再加一个。呃,是这个浮点型,这个我们说一下,这叫单精度浮点型是不是。单精度。单精度单精度。单。单啊单双的单单精度单精度浮点型,这还有个什么,双精度浮点型,是不是双精度浮点型。啊,然后是这个叫什么double吧啊double,然后ABCDEABCD啊D等于什么双定浮点型,大单晶浮型都是需要表示一个什么,就是浮典型数据的带小数点的,那我觉得什么叫5.12啊5.12。
19:08
然后这样写完,然后我们再去求它,它的大小abcd。In啊,Int类型LS4,让它等于size of abcd的D啊,好,这里面。呃,双图宰型完事了之后,还有对一些这个什么,呃整形相关的是不是,呃有什么有这个是short塔是不是我们称为叫什么短整形吧,嗯。短整形。啊。Short,然后abcde,让它等于什么等于个数啊,让它等于十啊,然后再看一下啊,多个等号啊,这里面多个等号。呃,短整型还有是。呃,长征行长正行。
20:03
调整形是哪个?是这个long ABC def等于,呃,也是等于十啊,这个等于结果我们不是看中的,我们看中什么,看成s of,求出来的这个内存大小是不是,呃,然后是长整形,然后是。还有一个叫长长整形是不是啊,长长整形,这长长整形是什么?是这个叫long long啊注意一下这是怎么样,Long后面加一个空格,再写个long啊,不是这俩连在一起的啊,ABCDEFFG,然后等于十,这结果不是我们关注的,我们关注什么?关注的是这个。啊,它这个大小是不是那好啊,然后这里面是。求一下,呃,这个四对应的是哪一个四对应的是。双图形吧,1234是不是,然后是短整形长整形和长整整形是不是还有仨音诶。还有三个啊,是int类型的,LENGTHS5等于三。
21:04
在off。Abcde,是不是其实咱们可以复制啊,咱们就手写得了。但是六等于。That of。ABCDEF,还有一个是G,是不是in类型的LS。七等于size of ABG是不是啊,最后这几只这个size of求来就什么就是这个写下注射吧,咱们在最上面这个这个血压注射啊,叫什么叫。Set off。求出。它不是一个什么,它不它不是一个函数,它是一个运算符啊,我们这个后面会给大家去讲什么叫运算符啊,是求出。数据类型在内存中。
22:00
站。字节。字节啊,这个字节我写括号是byte,我们一般情况说的就是什么大B是不是啊,那字节大小啊。字节大小啊,这是它的功能函数啊,这个意思,那我们求来啊这个值,然后去答一下啊,然后就是int float,然后是什么,然后是。TF,然后是。是哪个了?是in the float,差是不是这个是差,然后让它等于百分号D,斜杠N,然后逗号。三是不是,那我复制吧,还是复制吧,这样写太慢了,怎么复制啊?我想复制一行EA。诶啊对对,这DD是剪切啊,那行eapp,诶好像粘粘粘错位置了吧,呃,Eapu,然后是eapp几个了,1234呃567是不是这里面改一下这个内容就行了吧,啊这里面复制啊是。
23:06
差类型,然后是double啊,你扫的时候咱们再加,这里面是改成几123。四然后顺序就改的是567少一个吧,少一个咱们一会再说啊。Do,没写错吧,啊,然后是什么呀?Short吧,Short然后是。不到。然后是没少没写,写错吧,就是正好吧,正好吧,好,那是都写完了,都写完,我们看一下这几个值具体多少啊啊这个代码写的比较多啊,看一下多少行,但是重复内容特别多啊,你只需要会一个是不是基本上就会了,这里面写了36行代码啊,不是很多啊也啊VI不是VI是GCCC-OC。 Cc.C执行一下没有没有没有错误吧,运一下点斜杠C执行一下,那除了这个十之外,我们不用管的情况下,我们看一下其他这个数据类型占的有多少啊,一的类型多少个。
24:06
四个float就型的四个差类型几个一个,然后double几个八个,Short几个两个,Long几个四个,然后这个是浪,浪是几个八个,那我们可以给他排个序,是不是排序哪最小啊,然后呢,Short,然后呢in,然后float和这个什么呀,Long他们是一个,然后是double和这个long long,那这里面这个这个里面是需要大家记住的这几个值啊,一会咱们写笔记中。但是咱们做这些测试之前,它有个前提,这个前提是什么,我们在的是一定是一个什么是一个,呃,操作系统一定是一个32位的前提下才会是这个数啊,如果是64位情况下,这个实数值就怎么的就发生变化了,知道吧,你需要借助于前提,就是在32位情况下,那这个有前提限制之后,那你再说这个值啊就对了啊,我们看一下啊,这里面这个文件是不是32位情况下C是不是这个32位的程序啊啊好,那我们记下笔记啊,看一下我们能不能想起来这个每一个都是什么值啊,这块先放在这儿啊,咱们一会再去完善这块内容啊。
25:15
咱先把赛道给他说出来,这是第几个知识点,应该是一二,然后这个是原码方法,补法应该是三,这应该第四个知识点,第四个知识点是。Set off啊,这个是它是什么意思啊。嗯,啊,叫计算或者叫求出也行啊,求出呃,数据类型在内存中占的大小啊,这个大小是这个单位是byte啊,Byte这个字节大小啊。啊,它的使用方式应该是什么样的,比如说是先定一个类int类型,这是最终得到什么结果是不是啊,啊我们用这个length就是它的长度,或者是你用其他值叫value也可以,等于什么等于这个是size of加上什么加上这个是变量明啊能不能加常量啊。
26:06
能不能加量啊,不知道是不是啊,能加常量是不是包括其他的数据类型,比如说咱们前面讲的什么,前面讲的是什么结构体啊,或者是这个枚举联合体啊都行,包括那个是指针类型也可以啊,所以说这里面咱们说说的叫什么变量名,其实你不用变量名是不是也可以啊,用常量名也是不是也行啊,啊或者其他数据结构也行,这只什么,这只是第一种方式,还有第二种,第二种是怎么写呢?是in的类型的这个。Y6等于再off,后面加的就不用,不,不是什么,不是变量,而是什么,而是数据类型,一会给大家演示一下数据。类行,那你想想变量,我定义的这个变量名就是什么,数据类型呢?那这个数据类型直接用数据类型测试是不是也行啊,啊,当然数据类型你可以直接这样写,也可以,还有另外一种写法,你可以这样写that of,然后是。空格加上什么,加上这个数据类型。
27:03
这样写也可以啊,看到了吧,这是它的格式啊,这个格式这样的,我把它放大一点啊,等一下。嗯。14。那能继续,那咱们这个测试的数据类型,刚才已经测试完了,这些看一下啊,都有哪些数据类型,咱们写一下,首先是这个第一个最小的是什么是差,那我这里面括号写的是它的中文啊,叫字符型啊,它一定要怎么的小于。小于等于哪个,呃,小于小于哪个小于这个是。嗯。Short是不是啊,Short叫什么型,叫短整形,是不是短整形,它一定要小,小于这个短整形,而且还怎么的,而且这个短整型小于什么小于这个。小于小于这个是int类型,是不是这其中一种吧?啊啊或者是哪里呀,或者或者是。Lo的类型还有一种什么?还有一种是long类型是不是?那这里面需要大家注意的,这注意的就是应该是正常的规定啊,Short类型要小于等于in的类型,能明白这话意思吗?它并不是怎么,它毕竟是两个值,它也可能是其他值啊,那在这里面加一个,比如说这里面括号括起来的是啊,用这括号更容易让它区分最大小是一吧,这个字体大小是几啊是。
28:21
二啊,这个小于等于int int叫什么型啊?Int叫。整形啊,整形这个大小是几个,是四个是不是,然后这个flow型是几个,是叫什么名叫单精度。单精度图典型啊,这个它的大大小几个四个啊,同样这里面还有什么,还有一个是。我们称为什么类型啊,是长整形啊,长整形是几个,它也是四个啊。但一般情况下是怎么着,是int类型,在这个短整型和长整型之间,知道吧,它小于,呃,它的那个大于等于短整形小于。
29:07
小于等于什么?长整形知道吧,但这里面一般情况下,如果在32位操作系统下,这个短整形就是二,长整形就是解就是四知道吧,啊那还有一个什么,还有一个是小于其他类型哪个类型小于。小于这个是浪浪,什么浪浪啊,叫他叫什么名,叫不是叫常常正行啊常常。长长整形就叫这个名,不是我给起的名,是是就叫这个名啊,或者哪个,或者是这个dure叫什么啊,叫双精度浮电型,双精度浮电型啊,它俩自己占大小度啊,都是这个八个。八个大小这也是几个这也是。八个大小,那我们这里面给他这个,呃,划分一下啊,是这样划分,呃,是。
30:03
啊,这样情况你应该能看懂,能看懂吗?不看懂咱们再给他整一行去。能看懂吧,啊,这都都写了具体的这个值啊,但是这里面注意一下这个前提是什么,注意前提,注意前提,嗯呃注意什么,注意是呃。呃,这是根据。三呃。呃,根据32位。啊,操作。系。系统获取的数据类型。呃,数据类型大小吧,就这样写就行啊,把这个标红啊,这是我们注意的一个问题,呃,上午还有个注意问题,那个忘跟大家说了,是哪一块呢?就是在我们打印什么打印这个数据呢?打印这个呃,在进制中打印数据啊,我们打印什么打印版十进制,十六八进制和16进制是不是啊,没有做一个操作,就是没有做这个二进制操作是不是啊,那这里面也有个注意啊,这就给大家写上注意,注意什么在。
31:04
程序中没。有办法。办法表示一个二进制数,能明白这话意思吗?就二进制数在我们这个程序中是怎么的,就是给他定义这个值的情况,没办法演示,所以说我们只能定义三种,第一种十进制,八进制和16进制这三种数据啊,这是注意的问题啊,有同学问了,但是那个呃,讲课的时候忘跟大家说了啊,这是一个注意的问题,这里面注意的问题也是啊,是这个在32位啊,操作系统下获取的数据类型大小是这样的一个值。那这个大小我们已经算算出来了,就是通过什么,通过这个。呃,叫什么叫set off,哪儿的set off这关键字,这关键字干啥用的,咱们已经给它整体的去把所有的数据类型全看了一遍,那然后再研究什么,再研究这个源码方法补码啊,那比如说一个数据,那你这里面你就知道这里面应该存多长多短了,是不是啊好,那我们这里面回到回到这个前面这个例子,然后给大家举例,那如果是这个1986的情况下,那是不是应该怎么存,应该是存存正常吧,啊存正常一个数据。
32:07
那我看一下这里面够不够32个啊,帮我查一下1424344454,呃,这这里面这个呃五呃是。六四。7484是不是正好32个,你看我查的多准,是不是啊是不是。这呃是这里面表示的数是多少啊,表示的是这个呃,1086是哪个,1086是这个一个正数的1086是吧,是,那我们定义这个正数的情况下,应该应该是怎么定义呢?这里面还需要介绍一个叫有符号和无符号的一个区别,是不是啊?那比如说我们直接定义这个int类型,它是个有符号无符号呢,有符号的是s sign的是不是啊,是叫啊对对,是个有有符有符号的是什么sig吧?啊是不是,这是个有符有符号的值,这个值比如说定义个变量叫A等于。
33:02
1986是不是啊,那一般情况下,这个如果是有符号情况下,我可以怎么可以把这个省略掉,就这个有符号这东西可以省略掉,写括号里面嘛,是不是这个。有符号啊,标识啊,或者叫标志也行,有符号这个标志叫什么呢?标志叫。Sig啊,可以怎么着可以。不用写是不是,那因为写这个东西太多了,我直接写个int和这个有符号的int类型是不是一样的意思啊,所以说我们就这么着就是。不写它,那这里面定义为int就行,A等于1986,那我们在内存中存的这个数就是什么?就是这个。这个数是不是为什么呢?我们看一下整体的把这个源码方法方法再说一下啊,源码那是个什么东西呢?是呃,一个数的原码,就是它原始的二进制数啊,它有这个几点,我们看一下啊是。最高位是符号位,哪个哪个是符号位啊,是不是这个是符号位啊,其余的就是它的一个数字位吧,那好把这改成14的大小啊啊都是数字位,这是第一点,第二点其他那其他的数值部分是数值本身的绝对值的这个。
34:09
二进制数是不是啊啊,这是第二点,负数是负数的源码是在绝对值上最高位什么加个一是不是啊,那比如说这什么这个是1986,正数是这个数,那它的负数的源码应该是什么样的负数的源码?一然后是把这个怎么着。拿回来是不是就行啊,就这个数代表什么1986,这个数代表正数,那这个数代表什么负的11986这个我指的什么,指的都是这个是。源码不是这个源啊,是源码是这个源啊,啊源码啊,这个是源码啊,这是1986的源码,这是负的1986的1986元。马。是这个值啊,是这样的一个值存在的啊,把中间的给它这个删掉,那这是什么,这是。二进制二进制数吧,是不是啊,这是定义的这个值,那我们看看这是它的这个源码。
35:06
那比如说俩数相加的情况下,我这里面一个1986和一个负的1986相加的情况下,就是按照我们经理来说,那这样得到的结果应该是什么样的结果,1986和这个呃呃,1986和负的1986加起来应该是什么?是这个零的值,但是我们如果在计算机中存的是这俩数的情况下,那你说这加起来是零的值吗?不是零的值是不是?那所以说我们计算机中就不能采用原码来表示这个数的一个基本数据,那我们看一下它下面有另外一种介绍是什么?是这个。反码啊,反码这里面就是两点介绍,我看一下是对于一个正数原码反码它是怎么的,相同的是不是啊,相同的相同的情况下,那比如说我再写个什么,写个是。1986的。反码啊,反码和这个原码相同,是不是直接拷过来就行啊,因为它是什么是正数吧啊,那负的198诶。
36:02
负的1986的什么呀,这个。砝码它就和原码不同了,怎么不同,我们看一下是对于负数符号位不变,哪个位不变呢?那这个最高位不变,其余位呢,我看一下其余位做什么操作啊,其余位是取反,就是原先是一就变成零,原先是零就变成一,那我们看一下现在这个,呃,现在这个值应该什么样的啊。把这些全变成什么,全变成这个一,那我们看一下多少个。12341234123412341234,然后一后面到这为止就就变成啥了啊从这开始啊,从这开始,因为这里面有复数啊,给他这样写一下,他俩就是不是对齐了,那这里面一个什么000,然后是00111101,那这是他什么,这是他的这个。反码是不是,这我们从什么从这个一个数,然后给它推出它的原码,原码就是它原先二进去数是不是,呃,这负数的源码就只是最高位是个什么是一个。
37:04
啊一啊啊,正数是零啊,负数是一,再求出它的反码,然后再根据它反码做一个操作,什么操作呢?我们看一下。补码是不是在计算机系统中数值一律采用补码的形式,去什么呢?去存储,那看一下正数怎么样,原码反码补码相同是不是啊?如果说拿来一个数是正数的情况下,啪啪一求求来二进数,然后一写是不是就完事了?那然后对于负数来说呢?对于负数是怎么的,是七补码怎么的?呃,不是,是补码,就是它的反码加一,就是我们求出来哪个值啊,求出来的这个值再给它加一,什么加一就是什么码了,补码了啊补码了,那我们看一下是结果是多少啊,把这个复制一下啊,把这俩复制一下。是他的。五码。正数的补码,正数的原码方法补法三码相同是不是,那我们不用改了,那负数呢?负数情况下是怎么是把这个是加一,那加一情况下变成啥了,幺零了是不是,那正常情况下一九呃是什么是这个。
38:08
负的1986在我们计算机中存的是哪个?存的是哪个数啊?五码是不是啊,那这俩数再去操作的时候,那我们看一下这个这俩数在操作的时候,它得到结果就应该是几了,如果是1986,再加上一个负的1986,得到结果是不是零啊,我们算一下,那这里面就怎么就是开始进位了吧,是不是这两位先是得到结果是什么,得到结果是。哎呀,这零,然后这俩结果是不是进一了,然后这里面你看啊,这里面这个是四个一,这是四个零对应上了吧,是不是啊,但是后面有进一位,然后一直往前进一,这是五个一对应的是五个零是不是啊,然后这里面是一,呃,这里面是怎么是全是一是不是,加上这边全是零是怎么进一位了是不是,然后进完一位情况得得到结果是不是应该是这样的是呃。呃,一个一是不是后面加上啥,加上这个32个零,是不是123456789了,好,那我复制一下是不是大家可以明白了吧,是不是这个是。
39:11
王家飞。然后是定位项,然后是康佳威。这是几,这是几组了?是16个了吧,嗯,16个,然后是。再再来一个是不是,那是不是得到结果就是这个了,但是我们这个一个印的类型,这里面最多能存多少位啊,32位这里面已经多了,变成几了33位了,是不是这里面又涉及了一个问题,叫什么叫溢出的问题啊,这个溢出的问题,那把这个溢出的问题说一下啊。溢出,那什么是溢出呢?就是这个,呃,在数据进行操作的时候,那这个操作的时候也不论加也不论减,减的时候也可能一说啊对操作的时候。会导致一个问题,什么问题出现呢?
40:02
啊是你是这个问这个溢出问题,就是一出问题会导致这个是不是这个是不是这个最高位怎么的,就是加一了,导致这个超出了原来的这个位数大小啊是吧?一个页件类型最多只能存这个32个,这个小B是不是,但这里面存33个接受不了了,那把那个干掉是吧,最前面那个干掉就是把这个谁干掉啊一干掉那最后得到结果是不是这个全是零啊啊那零的情况下,那我那我如果零的情况下存在在内存中存的是不是也是普法形式存在的,那第一个是什么?第一个是零,那它一定是个正数了是不是,后面你看一下这个值,哎,零是不是,你写100个零和写三十二零是不是得到结果都一样的,这是怎么着把最高位溢出了,那咱们把这个说一下啊呃,在数据进行操作的时候会导致。呃,超出。呃,超出数据类型。大小啊。嗯,会。
41:01
向。会向,算了一风险大吧,会向。前呃前位前位进一前位位是这个位啊前卫诶。等一下啊,前卫。呃,进。一操作,那就导致什么多于什么了。呃,多余。多余啊,多余原始数据类型大小。会被系统自动舍弃,那会去,那这剩下的数就怎么被保留下来了那。保留保留哪些位数啊,保留是后面那位数啊呃保留从后面开始三呃就是呃开始是数据类型。大小的。
42:02
位数这句话能明白啥意思吗?我再把这个事说一遍啊,什么是溢出呢?是在数据进行操作的时候,会导致超出数据类型原本大小会向前进位啊,但是进位的情况下,可能是进一位,也可能是进多位,是不是这咱就不管了,是不是,那呃多于原先数据类型大小,原本是32个大小,这里面是33个了,是不是,那会呃会怎么样,会被系统自动舍弃,舍弃哪一个舍弃最开始的他应该是从后面查查多少个。查32个我保留下来,其余的怎么样都舍弃到,无论你是有多少个数都涉及到,是不是这样情况下,我们得出来的结果就是怎么一个对的结果了吧,啊,那比如说两个正数相加的时候,那比如说两个正数相加啊,你看一下。啊,我们我们这里面就不写32个零,咱写少点啊,咱们这里面给大家来个这个示例啊,比如说我这里面求什么求是这个是。十再加上20,就是先把十就是给它转成什么,转成这个五码形式存在,就看一下这俩值得结果啊,那咱们小写几位,写八位是不是就够了,那正常情况下是十的情况下是1010吧。
43:05
啊,是不是八加二啊,啊,然后前面再补什么,补这个四个零是不是这个对应的就是什么对应的就是。呃,十的什么十的这个数吧,是不是?呃,同样那个20也是个什么数,20也是一个正数吧?呃,最高位是这个,这个是幺了吧啊,然后是20的情况下,应该是16加上四吧,那是零零,呃,不是0100是不是这样结果,那我们求出下这俩值应该多少啊,是不是这个全是零啊,前三个这是一,这这是一吧,然后这是一,这是。这是一,这是一零,那这应该就是结果,应该谁的结果,30的结果了吧,30结果,那30在我们组里是一个正数吗?是不是这个正数啊,正数的情况下就不用变了,是不是,那如果是两个负数相加呢?再给大家来一个,比如说这里面是。呃,负十。再加上。负20,那我们看下结果啊,那这里面我们就用这个短位去计算一下啊,咱就不用长位去计算了啊。
44:04
那首先这个是负十,我们正常情况下再计算怎么表示啊,是以补码形式表示吧,那我们先求出来什么码啊,先求来原码是不是先求来什么呀,源码,然后是。五码,然后最后求来什么?是不是原码反码啊,Sorry sorry,反码和。补码是不是计算机存的是哪个存的是这这个吧,我标个红色啊啊,但是这个数据我得从源码才能求出来吧,呃,那我看一下怎么求啊,源码正常情况下应该是什么样的,应该是一,然后面是000,然后是1010,因为这里面还有都都是什么,都是零,我就自动舍弃掉了啊,你知道这一个多少位的,32位的啊啊,你别把它当成一个八位的啊,那这里面补码呢,应该是什么样的。怎么求出补码呢?是不是通过原码,然后最高位符号位不变,是不是去位求反,呃,求出来反应应该是多少啊?
45:00
000,呃,不是,是1111,然后是0101,这是他的什么呀码啊,反码求在求出补码补码情况下是四个一,然后是0110,是不是这样的补码啊,负十在我内存中存的是哪个数?是这个数吧啊,和之前那个数怎么样,就不一样了吧啊。那负十加十的情况下,得到结果一定是几,一定是零是不是,你可以自己计算一下是不是。那好,那我们再怎么着,再继续看一下这个负20,负20的操作啊。80的值应该是多少啊是。一然后是0100是不是这个值啊,你能算出来吗?16再加上一个四是不是这个值啊,啊,那它的这个砝码呢,最高的符号不变,然后这是。1101011是不是,然后这个他再直接再加,加上什么,加上这个一是不是110,然后是1100,那这俩值是不是这个我是两个补码啊,然后让两个补码相加,看一下得到结果为多少啊,那看一下这俩相加啊,我把它复制一下啊。
46:17
呃,粘贴到这儿就行,然后这个也给他拿过来。好像有点没对齐是不是?对不起啦。因为这前面有东西啊,我推一下,然后这这个也是。最后一下好了,这把对齐了吧,那看一下这个结果为多少,从最后一位开始算啊,这应该是结果为多少啊,零,然后这个结果为幺,然后呢,这个是零了吧,现在进一了,那前面进一加上这个一呢,加上这个一变成多少了?零又现在进一了吧?那这个结果加起来变成几了?呃,又加个一变成这个零,然后前面呢,前面这个三一应该进几个了,得到结果是幺,然后进一是不是,然后再往前进去是几啊幺然后是幺,然后是幺,后面还前面是不是还有幺啊。
47:09
前面是不是还有腰啊,那这个腰怎么会被省略掉吧,是不是啊,我们把它当做32位,当做32位一样看待啊,省略中间过程了去掉,那这个最终得到的结果是一个什么?是不是一个,我怎么感觉多一个呢?多打一个一吧,是不是应该把这个一也去掉啊?呃,是这样的结果啊,你算一下只能是这样的结果,是不是这个这样的结果,那把这个结果这就是一个什么呀?这是一个不棒存在计算机中,那我们要求出来它一个什么,求出来它的一个源码,是不是倒推一下啊,这是。补码啊,等腰写下是补码。把它求出它的砝码是,怎么求啊,减11110,然后是。0000101是不是这只啊,嗯嗯,然后是最高位什么位啊。符号位是不是再求出它的原码,原码是什么样的呢?是最高位符号位,那就是该是啥就是啥吧,负数是不是,那再求出来这个这个数的一个值,那就是它的什么就是它的。
48:12
结果是不是我们看一下这是三十三十吗。取反缺啊啊缺一波缺一波缺一波缺一步是什么?缺一步这个反码减一了吧,啊这一步是什么?这一步是做简易操作,这步是取反操作吧,啊是除了最高位符号位不变,是不是其余位取反的001,然后是1111110,这是不是把求来这个数原本的值了,那看一下这里面多少啊,是16加八加。加四加二得到结果是不是三啊,16加八加四再加二得到结果是不是30啊,30再前面加上前面最高位的符号位是几啊,负号,所以说这里面应该得到结果是负30,那在计算机计算的时候,就是采用这种形式去计算这个什么,这个两个数相加的能明白吧?呃,正数情况下可能简单一点,负数情况下是不是可能就是怎么的,就是呃稍微复杂一些,为什么这个把这个负数需要这么改呢?因为这个如果说你要这个负数情况下,正常加的情况下,加完之后这个数据怎么不对了吧,是不是只有改成什么,只有改成这个补码形式存数这个数据的时候才是怎么才是一个正确的数据,知道吧。
49:25
这是源码反码补码的一个推出的结论,以及它的这个实现的一个过程,那现在这个大家搞懂了吗?这个搞。
我来说两句