数据的存储
一、数据类型介绍
二、整形在内存中的存储方式
三、大小端字序介绍
一、数据类型介绍
1.数据类型
char //字符类型,在内存中是按照该字符的ASC码值来存储的,大小为1个字节
short //短整形类型,大小为2个字节
int //整形类型,大小为4个字节
long //长整形类型,大小为4个字节
long long //更长的整形类型,大小为8个字节
float //单精度浮点型,是为小数类型,大小为4个字节
double //双精度浮点型,同为小数类型,但精度更高,大小为8个字节
2.构造类型:
数组类型——array
结构体类型——struct
枚举类型——enum
联合类型——union
3.指针类型
char* pc
int* pi
float* pf
void* pv
4.空类型
void表示空类型,通常表示函数的返回类型、函数的参数、指针类型。
二、整形在内存中的存储方式
数据在内存中都是以二进制的形式存储的,且根据数据类型的不同,需要开辟的空间大小也不同。那么在讨论数据是如何存储在开辟的空间中这个问题之前,需要知道几个概念。
原码、反码、补码
原码:回到起点,数据在内存中都是以二进制的形式存储的,那么一个数字的原码就是它的二进制形式。一个原码是由符号位和数值位组成,符号位为0表示这是一个正数,为1则表示为负数,数值位则是十进制转换为二进制即可。
反码:反码则是将原码中的数值位,按位取反,即0变1,1变0。
补码:补码则是为反码加上1即可。
注:正数的原码、反码、补码都相同
例如:26 -35
26 原码:00000000 00000000 00000000 00011010 -35 原码:10000000 00000000 00000000 00100011
反码:00000000 00000000 00000000 00011010 反码: 11111111 11111111 11111111 11011100
补码:00000000 00000000 00000000 00011010 补码: 11111111 11111111 11111111 11011101
在计算机系统中,数值一律用补码来表示和存储。因为使用补码,可以将符号位和数值域统一处理,而且因为CPU只有加法器,所以使用补码也可以统一处理加法和减法。
三、大小端字序介绍
大端字节序,是指数据的低位保存在内存的高地址中,而数据的高位保存在内存的低地址中。
小端字节序,是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中。
当前大多的计算机都是使用小端字节序,可以通过以下代码来验证当前的存储方式是小端还是大端。
#include<stdio.h>
int main(){
int a = 1;
char* p = (char*)&a;
if(*p == 1){
printf("当前存储方式是小端\n");
}
else{
printf("当前存储方式是大端\n");
}
return 0;
}