一 常见的内置类型:
char //字符数据类型
short //短整形
int //整形
long //长整型
long long //长长整形
float //单精度整形
double //双精度整形
二 自定义类型:
数组类型
结构体类型
枚举类型
联合类型
char(一个字节,4bit) unsigned char:无符号位,表示范围:0—255 signed char:最高位是符号位,1表示负数,0表示正数。可表示数字范围: -128—127
short(两个字节,8bit) unsigned short [int] signed short [int]
int (四个字节,32bit) unsigned int signed int
long (四个字节,32int) unsigned long [int] signed long [int]
float:单精度浮点型
double:双精度浮点型
int *pi
char *pc
float *pf
void *pv
void 表示空类型
整形分为有符号整形,无符号整形。
有符号整型分为正整形和负整形。
对于整形来说:数据在内存里是以补码形式存放(正整形和无符号整形原码反码补码相同)。
原码
直接将整形按照正负数形式翻译成二进制
反码
原码符号位不变,其他位依次按位取反(二进制最高位为符号位,0表示正数,1表示负数)
补码
反码+1得到补码
数据为什么在内存中以补码形式存储?原因在于使用补码可以将符号位和数值位统一处理进行存储。
我们虽然了解数据在内存中的存储形式,但字节实际存放在内存里的顺序有所不同
大端存储模式(大端字节序存储):数据低位保存在内存高地址中,数据的高位保存在低地址中。
小端存储模式(小端字节序存储):数据低位保存在内存低地址中,数据的高位保存在高地址中。
根据IEEE754,任何二进制浮点数都可以表示成如下形式:
(-1)^S * M * 2^E
(-1)^S表示符号位,S=0表示正数,S=1表示负数
M表示有效数字,在[1,2)区间内
2^E是指数位
IEEE 754规定:单精度,双精度浮点数在内存中存储模型如下:
举个例子:十进制的5.5,写成二进制为101.1,相当于1.011 * 2^2.按照上边格式就是 S=0, M=1.011, E=2。
对于有效数字M和指数部分E还有具体规定。https://baike.baidu.com/item/IEEE 754/3869922?fr=aladdin