要了解数据的存储,首先应知道c语言中类型的基本分类,以下是类型的基本分类(初学基本,不全)
一.类型基本分类
整形类型:
char: unsigned char, signed char
short: unsigned short(int), signed short(int)
int: unsigned int, signed int
long: unsigned long, signed long
浮点类型:float, double
构造类型(自定义类型):数组类型,结构体类型 struct, 枚举类型 enum, 联合类型 union
指针类型:int* pi, char* pc, float* pf, void* pe
空类型:void表示空类型(无类型),通常应用于函数的返回类型void test(),函数的参数void tset(void),指针类型void* p
二.整数在内存中的存储
数据在内存中以二进制的形式存储
对于整数来说,整数的二进制有三种表现形式:原码,补码,反码。整数的内存中存储的是二进制的补码
正整数:原码,反码,补码相同
负整数:原码,反码,补码需要计算
例:-10(32位系统)
原码(负数最高为1):10000000000000000000000000001010
反码(符号位不变,其他位按位取反):11111111111111111111111111110101
补码(反码+1):11111111111111111111111111110110
补码想要转换为原码时可以再次对补码按位取反然后+1
三.大小端
数据存储时,内存地址是按照从低到高存储的,这也就导致了在数据的使用时,是先使用高位地址的数据,然后再使用低位地址的数据,因此就是先存储的后使用,后存储的先使用。由此也就得出了数据的两种存储排序
1.大端字节序:把数据的低位字节序的内容存放在高地址处,高位字节序的内容存放在低地址处
2.小端字节序:把数据的低位字节序的内容存放在低地址处,高位字节序的内容存放在高地址处