目录
一、数据类型
C语言基本的内置类型有:
char //字符数据类型 1字节
short //短整型 2字节
int //整型 4字节
long //长整型 4字节
long long //更长的整型 8字节
float //单精度浮点数 4字节
double //双精度浮点数 8字节
类型的基本归类有:
整型、浮点型、构造类型、指针类型、空类型等。
其中,构造类型有:
> 数组类型
> 结构体类型 struct
> 枚举类型 enum
> 联合类型 union
二、整型数据在内存中的存储
一个变量的创建需要在内存中开辟空间,空间的大小是根据不同的类型而决定的。
然而,数据在所开辟内存中到底是如何存储的?
先介绍三个概念:
计算机中的有符号数有三种表示方法,即原码、反码和补码。
三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位三种表示方法各不相同。
1. 原码
直接将二进制按照正负数的形式翻译成二进制。
2. 反码
原码的符号位不变,其他位依次按位取反。
3. 补码
反码+1。
正数的原、反、补码都相同。
三、大小端模式
大端(存储)模式:是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中;
小端(存储)模式:是指数据的低位保存在内存的低地址中,而数据的高位,保存在内存的高地址中。
为什么有大小端模式?
在计算机系统中,内存是以字节为单位的,每个地址单元对应这一个字节,一个字节为8bit。而C语言中除了8bit的char类型之外,还有16bit的short类型,32bit的long类型,那么必然存在着如何安排多个字节的问题,因此就有了大小端模式。
四、浮点型数据在内存中的存储
浮点型数据有:
float
double
long double
IEEE 754规定:
对于32位浮点数,最高1位是符号位S,接着8位是指数E,剩下23位是有效数字M。
对于64位浮点数,最高1位是符号位S,接着11位是指数E,剩下52位是有效数字M。
任意一个二进制浮点数V可以表示为:
(-1)^S * M * 2^E
(-1)^S表示符号位。当S=0,V为正数;当S=1,V为负数。
M表示有效数字。1<=M<2
2^E表示指数位。