一、前言
C语言中数据类型可以分成两大类:
1.内置类型(C语言本身就具有的类型)
2.自定义类型(构造类型)
二、了解各个类型
I.内置类型:
1.整型家族2.浮点型家族3.指针类型4.空类型
补充: 空类型中void表示空类型(无类型)
II.构造类型:
数组类型 >例如:int arr[10]=0;数据类型是int [10]
结构体类型>关键字struct
枚举类型>关键字enum
联合类型>关键字union
三、整型在内存中存储
在内存中存储的是,我们数字二进制补码的16进制形式
补充: 在计算机系统中,数值一律用补码来存储和表示。原因就是我们使用补码可以将符号位和数值域统一处理;同时,加法减法也可以统一处理(CPU只有加法器),此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路
大小端介绍
大端:大端字节序存储模式
小端:小端字节序存储模式
大端存储模式:是指数据的低位保存在内存高地址中,而数据高位保存在内存的低地址
小端存储模式:是指数据的低位保存在内存低地址中,而数据高位保存在内存的高地址
四、字符类型储存的数据
特别注意:
10000000—>-128这个其实是规定
或者我们可以这样理解
110000000原码
1011111111反码
110000000补码----只留下后面8位
补充:
我们要查询整型家族数据的取值范围:在编译器安装包里查看文件limits.h
我们要查询浮点型家族数据的取值范围:在编译器安装包里查看文件float.h
五、浮点型数据存储
补充: 1E10表示1.0*10^10
进入正题
例如:9.0
我们将其存入内存我们将其分成两个部分,一个部分是小数点前面的部分,另一部分是小数点后面的部分用二进制表示:
1001.0等价于(-1)^0 * 1.001 *2 ^3
S=0;M=1.0001;E=3
但是又有规定因为M中的1是恒存在的,所以把去除掉1的数作为M,存进M;因为无法存进负的E值我们要在原来E的基础上加上127
所以最终结果为S=0;M=0001;E=130
9.0存入内存最终是:01000001000010000000000000000000
转为16进制:4108 0000
六、从内存中取出浮点型数据
M的值
前面加上1和’.’
E的值: