在C语言中,整数的存储涉及数据类型、存储方式和字节顺序等方面的知识,以下是详细介绍:
数据类型
- 基本整数类型:有 char 、 short 、 int 、 long 、 long long 等。通常 char 占1个字节, short 占2个字节, int 一般占4个字节, long 在32位系统占4个字节,64位系统占64个字节, long long 占8个字节。
- 无符号整数类型:在上述类型前加 unsigned ,如 unsigned char 、 unsigned int 等,无符号整数只能表示非负整数,取值范围是0到2的n次方减1,n为该类型占用的位数。
存储方式
- 原码:最高位为符号位,0表示正数,1表示负数,其余位表示数值的绝对值。如8位 int 型的5的原码是00000101,-5的原码是10000101。
- 反码:正数的反码与原码相同,负数的反码是在原码的基础上,符号位不变,其余位取反。如-5的反码是11111010。
- 补码:C语言中整数通常以补码形式存储。正数的补码与原码相同,负数的补码是在反码的基础上加1。如-5的补码是11111011。使用补码可将减法运算转换为加法运算,简化计算机的运算电路。
字节顺序
- 大端序:数据的高位字节存于低地址,低位字节存于高地址。如对于32位整数0x12345678,高位字节0x12存于内存低地址,接着依次是0x34、0x56、0x78存于更高地址。
- 小端序:与大端序相反,数据的低位字节存于低地址,高位字节存于高地址。对于0x12345678,在小端序中,0x78存于内存低地址,接着是0x56、0x34、0x12存于更高地址。