一、数据的类型
整型
char 1Byte (32位机器)
short 2Bytes(32位机器)
int 4Bytes(32位机器)
long int 4Bytes(32位机器)
long long int 8Bytes(32位机器)
浮点型
float 4Byte(32位机器)
double 8Byte(32位机器)
其中每种数据类型都有有符号数(unsigned)和无符号数(signed)两种,signed通常省略 。
无符号数就是存储过程中的最高位符号位不存在,作为数据位使用,而有符号数的最高二进制位为符号位。
由于在运算过程中,同城会发生隐式转换(整型提升和算术转换),所以对于数据类型的实际存储形式要有深入的理解。
整型提升(最起码以int类型计算)
1.正数的整型提升 全部补0(高位符号位)
2.负数的整型提升 全部补1(高位符号位)
算数转换
eg
printf("%u",sizeof(+(char)5))
打印无符号数发生整形提升 无论使用
%d还是%u
此外还有构造类型(数组类型 、结构体类型 struct 、 枚举类型 enum 、联合类型 union),
指针类型和空类型等。
大小端存储
在计算机存储过程中 有大端存储和小端存储,以0x11223344为例:
大端存储就是数据位的低字节位存储在高位,高字节存储在低位;
eg:(0x11 0x22 0x33 0x44)地址由低到高
小端存储就是数据位的低字节位存储在低位,高字节存储在高位。
eg:(0x44 0x33 0x22 0x11)地址由低到高
二、原码、反码和补码
计算机的运算是以补码形式存储和运算的
正数:
原码、反码、补码相同。(无符号