目录
1.整形家族
2.变量的创建
C语言中,变量的创建是需要在内存中开辟空间的(开辟空间的大小是根据不同的类型而决定的),而内存中空间类型主要分为三类:栈区,堆区,静态区。
不同类型变量在内存中开辟的空间位置如下图:
3. 整形在内存中的存储
既然已经知道变量的创建是要在内存中开辟空间,那么接下来我们谈谈数据在所开辟内存中到底是如何存储的。
比如:
int a = 20;
int b = -10;
我们知道为 a 分配四个字节的空间。 那如何存储?
下来了解下面的概念:
3.1原码、反码、补码
整数在内存中存储方式:以二进制补码形式存储
整数的二进制有三种形式:原码,反码,补码。
一个整数占4个字节,相当于32比特位,第一位为符号位,1表示负数,0表示正数。
正数的原码,反码,补码相同
负数的原码,反码,补码要计算
我们看看在内存中的存储:
我们可以看到对于a和b分别存储的是补码。但是我们发现顺序有点不对劲。
这是又为什么?
3.2 大小端介绍
什么大端小端:
大端(存储)模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中;
小端(存储)模式,是指数据的低位保存在内存的低地址中,而数据的高位,,保存在内存的高地址中。
举个简单例子:
3.3 写程序判断编程环境是大端还是小端存储
#include <stdio.h>
int check_sys()
{
int i = 1;
return (*(char *)&i);
}
int main()
{
int ret = check_sys();
if(ret == 1)
{
printf("小端\n");
}
else
{
printf("大端\n");
}
return 0;
}