Bootstrap

C语言进阶 数据的存储(上)

一、 数据类型详细介绍

我们前面已经学习了基本的内置类型
char 字符数据类型
short 短整型
int 整型
long 长整型
long long 更长的整型
float 单精度浮点型
double 双精度浮点形

类型有什么意义呢?
1 使用这个类型开辟内存空间的大小
比如说 int 4个字节 short 两个字节 char 一个字节

2 如何看待内存空间的视角
这个本文后面会提及

1. 整型家族

char类型
包括 unsigned char signed char
short类型
包括unsigned short signed short
int类型
包括unsigned int signed int
long类型
包括unsigned long signed long

 2. 浮点数家族

float
double

 3. 构造类型

包括

数组类型
结构体类型struct
枚举类型enum
联合类型union

 4. 指针类型

 int* p
char *p
float *p
等等

 5. 空类型

void表示空类型(无类型)

通常应用于函数的返回类型 函数的参数 指针类型

 二. 原码 反码 补码

计算机中有整数的三种2进制表示方式 即原码 反码 补码

整数的原码 反码 补码都相同

负数的三种表示方式各不相同

原码
直接将数值按照正负数的形式翻译成二进制就可以得到原码

 反码
原码的符号位不变 其他位按位取反

 补码
反码加一得到补码

例如
1的原码 反码 补码都是
0000 0000 0000 0000 0000 0000 0000 0001

-1的原码是
1000 0000 0000 0000 0000 0000 0000 0001
反码是
1111 1111 1111 1111 1111 1111 1111 1110
补码是
1111 1111 1111 1111 1111 1111 1111 1111

对于整型数据俩说 计算机中存放的是补码

这样的好处有两个
1 可以将符号位和数值域统一处理
2 cpu只能做加法处理
(大家可以尝试一下1和-1的原码 还有补码相加 运算完就会明白这样设计的精妙之处)
3 原码和反码相互转换 运算过程是相同的
(原码取反加一得到补码 同样的补码取反加一得到原码)

三、大小端字节序介绍及判断

关于大小端的介绍大家可以看我的这一篇文章

大端法和小端法 这里我就不细说了

关于如何判断大小端法,我们可以设计一个函数实现

这样子就可以判断我们机器使用的是大端法还是小端法啦

;