主要内容:
- 数据类型详细介绍
- 整形在内存中的存储:原码、反码、补码
- 大小端字节序介绍
- 浮点型在内存中的存储解析
一,数据类型
1. C语言中内置数据类型
char //字符数据类型 //1字节
short //短整型 //2字节
int //整形 //4字节
long //长整型
long long //更长的整形
float //单精度浮点数 //4字节
double //双精度浮点数 //8字节
而使用类型的意义:
1. 使用这个类型开辟内存空间的大小(大小决定了使用范围)。
2. 如何看待内存空间的视角。
2.类型的基本归类
整型
char
unsigned char
signed char
short
unsigned short [int]
signed short [int]
int
unsigned int
signed int
long
unsigned long [int]
signed long [int]
- char到底是signed char 还是 unsigned char取决于编译器的实现,在常见的编译器下,char就是signed char
- 无符号整型里不能存储负数
- 方框里的int 可以省略
浮点型
float //单精度浮点型
double //多精度浮点型
构造类型(自定义类型)
> 数组类型
> 结构体类型 struct
> 枚举类型 enum
> 联合类型 union
指针类型
int *pi;
char *pc;
float* pf;
void* pv;
空类型
void 表示空类型(无类型)
通常应用于函数的返回类型、函数的参数、指针类型
二,整型在内存中的存储
一个变量的创建是要在内存中开辟空间的。空间的大小是根据不同的类型而决定的。
那么在开辟的空间中是如何存储数据的呢?
我们先介绍一些基本概念。
计算机中的整数有三种表示方法,即原码、反码和补码。
三种表示方法均有
符号位
和
数值位
两部分,符号位都是用
0
表示
“
正
”
,用
1
表示
“
负
”
,而数值位
负整数的三种表示方法各不相同。
原码
直接将二进制按照正负数的形式翻译成二进制就可以。
反码
将原码的符号位不变,其他位依次按位取反就可以得到了。
补码
反码+1就得到补码。
正数的原、反、补码都相同。
对于整形来说:数据存放内存中其实存放的是补码。
但是,在我们观察数据在计算机中的存储时,我们会看到数据存储的顺序是反的,为什么呢?
接下来,我们来介绍别的概念。
三,大小端字节序介绍
1.什么是大端小端
大端(存储)模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中;
小端(存储)模式,是指数据的低位保存在内存的低地址中,而数据的高位
,
,保存在内存的高地址中。
2.为什么会有大端小端
这是因为在计算机系统中,我们是以字节为单位的,每个地址单元
都对应着一个字节,一个字节为8
bit
。
但是在
C
语言中除了
8 bit
的char之外,还有
16 bit
的
short
型,
32 bit
的
long
型(要看具体的编
译器),另外,对于位数大于
8
位的处理器,例如16
位或者
32
位的处理器,由于寄存器宽度大于一个字节,那么必然存在着一个如何将多个字节安排的问题。因此就导致了大端存储模式和小端存储模式。
四,浮点数在内存中的存储
1.常见的浮点数:
3.14159
1E10
浮点数家族包括:
float
、
double
、
long double
类型。
浮点数表示的范围:
float.h
中定义
2.浮点数的存储规则

对于64位的浮点数,最高的一位是符号位s,接着的11位是指数E,剩下的52位为有效数字M。