目录
向着目标继续前进吧,也许些许孤独
我们日常进行编程时,经常会创建不同的变量,那么这些变量在计算机中是怎样储存的呢,这就是这篇文章将要告诉大家的事情。
引入,计算机的储存:
众所周知,我们的计算机在储存数据的时候一般有两种储存方式:2进制存储,16进制存储。
一般在对普通变量进行存储时我们的计算机会将要存储的数据转化为2进制的形式储存到内存空间。
就好比下面的代码
int main()
{
int a = 23;
return 0;
}
我们定义 int a=23;其2进制为10111。因为int 类型占用4个字节,每个字节占有8个比特位,则其在内存中的储存形式为00000000 00000000 00000000 00010111.将其转换为16进制为00 00 00 17.
数据提取与查询方式:
当我们想要提取或者查询我们的数据时我们会以2进制的形式将数据提取出来:
我们在存储数据的时,创建的变量一般最小单位为1个字节(char)类型,所以我们在提取和查询时的最小单位是1个字节。但这时为了方便查询我们会将2进制数转化为16进制方便查看。
这里我们讲述一下在VS环境下如何查看数据在内存中的储存:
1.先进行调试
2.打开调试的窗口界面
3.选择内存,随便选择一个内存监视窗口
数据的存储顺序,计算机大小端(重要):
那么我们储存在内存中的数据按照字节为单位是按照什么样的顺序存储的呢?
这就需要我们去验证:我们的数据是以00 00 00 17 的形式储存,读取时从低地址向高地址读取;还是17 00 00 00的形式存储,读取时从高地址向低地址读取。
通过观察我们可以发现:两者的差别在第一个和最后一个字节,那么我们就通过比较其中一个字节来进行判断。
int main()
{
int a = 23;
char* p = (char*)&a;
printf("%d\n", *p);
return 0;
}
这里通过取出一个字符我们可以知道当取出一个字节是我们先取出00010111
这里就要引入一个新概念:数据截断
注意:
我们取出地址是是先取出低地址,所以我们的计算机是将小位的数据存储到低地址。
这样将数据的低字节数据存放到低地址的储存方式我们叫做:小端存储
那么将数据的高字节数据存放到低地址的储存方式我们叫做:大端存储
也就是什么位在低处,就是什么端的存储方式
这里我们可以做一道习题:
这道题答案为B
向着目标继续前进吧,也许些许孤独