前言
本文主要讲解点
- 数据类型详细介绍
- 整形在内存中的存储:原码、反码、补码
- 大小端字节序介绍及判断
- 浮点型在内存中的存储解析
数据类型
C语言基本的内置类型
char //字符数据类型 unsigned char //signed(有符号)/unsigned(无符号) signed char //大多数编译器默认char为 signed char 即有符号类型(有的认为是unsigned char) //对于 short int long 都认为是有符号类型 short //短整型 unsigned short signed short int //整形 unsigned int signed int long //长整型 unsigned long signed long long long //更长的整形 float //单精度浮点数 double //双精度浮点数 //C语言有没有字符串类型? 有字符串,没有字符串类型
型的意义
- 使用这个类型开辟内存空间的大小(大小决定了使用范围)
- 如何看待内存空间的视角(电脑存取数据看待的视角)
类型的基本归类
- 整形家族
char unsigned char signed char short unsigned short [int] signed short [int] int unsigned int signed int long unsigned long [int] signed long [int]
- 浮点数家族
1. float 2. double
- 构造类型
> 数组类型 > 结构体类型 struct > 枚举类型 enum > 联合类型 union
- 指针类型
1. int *pi; 2. char *pc; 3. float* pf; 4. void* pv;
- 空类型
void 表示空类型(无类型)//理论不会开辟空间,要么当做为一个占位符,故不能定义变量 //通常应用于函数的返回类型、函数的参数、指针类型
整形在内存中的存储
变量的创建会在内存中开辟空间,而空间的大小根据类型来决定
原码、反码、补码
原码、反码和补码三种表示方法均有符号位和数值位
符号位都是用0表示“正”,用1表示“负”(符号位依旧符合二进制运算)
- 正整数
原、反、补码都相同
- 负整数
原码:直接将二进制按照正负数的形式翻译成二进制就可以
反码:将原码的符号位不变,其他位依次按位取反就可以得到了
补码:反码+1就得到补码
- 对于整形来说
数据存放内存中其实存放的是补码
而数据的读取是使用原码
意义
在计算机系统中,数值一律用补码来表示和存储
使用补码可以将符号位和数值域统一处理
同时加法和减法也可以统一处理(CPU只有加法器)
而补码与原码相互转换的运算过程是相同的(共用一套法则)(不需要额外的硬件电路)
大小端
对于数据在内存存储补码时的字节排列顺序是有差异的(对于不同编译器)
什么是大端小端
大端:指数据的低位保存在内存的高地址中,而数据的高(权)位,保存在内存的低地址中
小端:指数据的低位保存在内存的低地址中,而数据的高(权)位,保存在内存的高地址中