一、数据类型的介绍
常见的数据类型:
char //字符型 1字节
short //短整型 2字节
int //整形 4字节
long //长整型 >=4字节
long long //更长的整形 8字节
float //单精度浮点型 4字节
double //双精度浮点型 8字节
类型的作用:
1、决定了开辟内存空间的大小
2、决定了如何看待内存空间里的值(存放在内存里相同的值,不同的类型有不同的解读方法)
值得注意的是:整形又分为有符号整形和无符号整形(这里的整形包括char,short,int,long等)
有符号和无符号的区别在于取值范围的不同
例如:
- signed int:-2^31 ~ 2^31 - 1 (包含负数,整数范围较小)
- unsigned int:0 ~ 2^32 (不包含负数,正整数范围较大)
构造类型:
数组类型 常见数据类型 [大小] // int arr[10]
结构体类型 struct
枚举类型 enum
联合类型 union
指针类型:
int* p;
char* p;
float* p;
void* p;
...
二、整形在内存中的存储
计算机中整数有三种2进制的表示方法,分别是原码、反码和补码(内存中存放补码)
三种方法都是由数值位和符号位组成,符号位用0表示正,1表示负(最高位为符号位)
- 正数的原码、反码和补码相同
- 负数的原码、反码和补码不相同
例如:-1
原码:10000000000000000000000000000001(就是将-1直接用二进制表示)
反码:1111111111111111111111111111111111110(符号位不变,其余位按位取反)
补码:1111111111111111111111111111111111111(反码加一)
三、大小端(数据在内存中以字节为单位的排列顺序)
大端模式:是指数据的低位保存在内存的高地址中,而数据的高位保存在内存的低地址中
小端模式:是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中
例如:
int a = 0x11223344;
在小端模式中,a在内存中的存放如下图
在大端模式中,则应该是11 22 33 44
四、浮点数的存储方法(以float为例)
根据国际标准IEEE(电气和电子工程协会)754,任意一个二进制浮点数V可以表示成下面型式:
(-1)^S * M * 2^E
其中S代表正负,M代表有效数字,E代表小数点的移动
类比科学计数法:123000 = (-1)^0 * 1.23 * 10^5
以float为例,float大小是4字节,共有32个比特位,内存分配如下
(具体存放方法这里不做解释)