# 1.1、内置类型
C++ 初始的**内置类型**(built-in types)分为两类:算术的类型和一个特殊的类型 void。**void类型**不关联到具体的值,仅在某些特定场景下使用,通常用来表示一个函数没有返回值。
## 算术类型
**算术类型**(arithmetic types)分为两类:整数类型(integral types)和浮点数类型(floating-point types),其中整数类型(int type)也包括字符类型(character type)和布尔类型(boolean type)。
[Reference: runoob-C++数据类型](https://www.runoob.com/cplusplus/cpp-data-types.html)
## 数值表示法
> 计算机通过二进制序列保存数据,每个二进制位称为一个位(bit),最小的可寻址单元称为比特(byte),一个比特等于8个位(1 byte = 8 bits)。
### 机器码
**原码**:由符号位(正数为0,负数为1)和真值绝对值(二进制)表示。
表示范围为: `$ -2^{n-1}+1 \sim 2^{n-1}-1 $`
例,以8 bit字长为例,`$ [−74]_{原} = 1100\ 1010 $`
**反码**:正数的反码与其原码相同;对于负数,其原码的符号位不变,数值位按位求反。
表示范围为: `$ -2^{n-1}+1 \sim 2^{n-1}-1 $`
例,以8 bit字长为例),`$ [−74]_{原} = 1011\ 0101 $`
**补码**:正数的补码就是其本身,负数的补码是在其原码的基础上,符号位不变,其余各位取反,最后加1(即在反码的基础上加1)。
表示范围为: `$ -2^{n-1} \sim 2^{n-1}-1 $`
例,以8 bit字长为例),`$ [−74]_{原} = 1011\ 0110 $`
### 表示方法
**整型变量**:采用补码表示,原因是补码形式效率最高。
`$ (-1) + (-127) = [1000 0001]_{原} + [1111 1111]_{原} = [1111 1111]_{补} +
[1000 0001]_{补} = [1000 0000]_{补} $`
`$ (1) + (-1) = [0000 0001]_{原} + [1000 0001]_{原} = [0000 0001]_{补} +
[1111 1111]_{补} = [0000 0000]_{补} $`
**浮点型变量**:
* 单精度浮点型(float):1位符号(S),8位阶码(E),23位尾数(M);
* 双精度浮点型(double):1位符号(S),11位阶码(E),52位尾数(M);
`$ val = (-1)^S * 2^{E-0x3ff} * 1.M $`,其中 `$ 0 ≤ E ≤ 0x7ff $`,`- 0x3ff` 称为偏正值,使阶码即可正亦可负。
[Reference:zhihu-二进制浮点数](https://zhuanlan.zhihu.com/p/58731780)
## 常量
常量是固定值,在程序执行期间不会改变,又叫做**字面量**(literal)。常量可以是任何的基本数据类型,可分为整型数字、浮点数字、字符、字符串和布尔值。
[Reference: runoob-C++常量](https://www.runoob.com/cplusplus/cpp-constants-literals.html)
- 目录
- 基础知识
- 1、变量和基础类型
- 1.1、内置类型
- 1.2、变量
- 1.3、复合类型
- 1.4、类型修饰符
- 1.5、类型处理
- 1.6、自定义结构
- 1.7、数组
- 2、表达式和语句
- 2.1、运算符
- 2.2、语句
- 3、函数
- 1、语法相关
- 2、资源管理
- 3、面向对象
- 4、模板与泛型编程
- Problem01:判断类中是否包含函数
- Problem02:解析函数的参数类型
- 5、系统库
- Problem01:多线程维护最大值
- Problem02:介绍一下strcpy、strncpy、memcpy、memmove
- Problem03:介绍一下网络编程
- Problem04:select、poll、epoll的区别
- 未整理
- Problem11:实现在main函数前、后执行的函数
- Problem12:可变参函数的实现
- Problem13:全局变量初始化顺序问题
- Problem14:介绍一下隐式转换
- Problem07:实现一个不能被拷贝的类
- Problem08:实现一个只能通过动态、静态分配的类
- 开源项目
- redis
- 第一部分 数据结构与对象
- redis 底层数据结构
- redis 对象
- taskflow
- 数据结构
- Executor
