1、目前常用的机器都是32位和64位的,但是有时候会考虑16位机。总结一下在三种位数下常用的数据类型所占的字节大小。
| 数据类型 | 16位(byte) | 32位(byte) | 64位(byte) | 取值范围 | 
|---|---|---|---|---|
| char | 1 | 1 | 1 | -128 ~ 127 | 
| unsigned char | 1 | 1 | 1 | 0 ~ 255 | 
| short int / short | 2 | 2 | 2 | -32768~32767 | 
| unsigned short | 2 | 2 | 2 | 0 ~ 65535 | 
| int | 2 | 4 | 4 | -2147483648~2157483647 | 
| unsigned int | 2 | 4 | 4 | 0~4294967295 | 
| long int / long | 4 | 4 | 8 | -2147483648~2147483647 | 
| unsigned long | 4 | 4 | 8 | 0~42294967295 | 
| long long int / long long | 8 | 8 | 8 | -9223372036854775808~9223372036854775807 | 
| double | 8 | 8 | 8 | 1.7E+10的负308次⽅~1.7E+10的正308次⽅ | 
| float | 4 | 4 | 4 | 3.4E+10的负38次⽅~3.4E+10的38次⽅ | 
| long double | 10/12 | 10/16 | 有效位10字节。32位为了对齐实际分配12字节;64位分配16字节 | |
| 指针 | 2 | 4 | 8 | / | 
2、大端存储和小段存储:
大端存储模式:数据的低位保存在内存中的高地址中,数据的高位保存在内存中的低地址中。
 小段存储模式:数据的低位保存在内存中的低地址中,数据的高位保存在内存中的高地址中。
 以0x12345678为例:
 大端存储方式:
地址:   0x00  0x01  0x02  0x03+-----+-----+-----+-----+
数据:  | 12  | 34  | 56  | 78  |+-----+-----+-----+-----+
小端存储方式:
地址:   0x00  0x01  0x02  0x03+-----+-----+-----+-----+
数据:  | 78  | 56  | 34  | 12  |+-----+-----+-----+-----+
注:在每个字节中,高位在左,低位在右。
 使用C语言判断大端存储还是小端存储:
int main() {int a = 1;char* p = (char*) & a;//char* -- 访问一个字节(第一个地址)if (*p == 1){printf("小端\n");}else{printf("大端\n");}return 0;
}
