2025暑假csp笔试笔记
1.计算机发展的五个阶段划分
冯诺依曼计算机体系
程序+数据
计算的组成
1、存储器
2、总线分类
计算机语言
1、低级语言
2、高级语言
计算机进制与转换
一、常见的进制
十进制(Decimal):
- 基数为10,使用0~9十个数字。
- 示例:123.45 = 1×10² + 2×10¹ + 3×10⁰ + 4×10⁻¹ + 5×10⁻²
二进制(Binary):
- 基数为2,使用0和1两个数字。
- 计算机内部使用二进制,因为二进制状态(0和1)易于用物理设备表示(如开和关,高电平和低电平)。
- 示例:101.11(二进制) = 1×2² + 0×2¹ + 1×2⁰ + 1×2⁻¹ + 1×2⁻² = 5.75(十进制)
八进制(Octal):
- 基数为8,使用0~7八个数字。
- 示例:123.4(八进制) = 1×8² + 2×8¹ + 3×8⁰ + 4×8⁻¹ = 83.5(十进制)
十六进制(Hexadecimal):
- 基数为16,使用0~9和A~F(或a~f)表示,其中A=10,B=11,C=12,D=13,E=14,F=15。
- 在计算机中常用于简化二进制表示(因为与二进制转换方便)。
- 示例:1A.8(十六进制) = 1×16¹ + 10×16⁰ + 8×16⁻¹ = 26.5(十进制)
二、为什么计算机使用二进制?
- 物理实现容易:只需要两种稳定状态的物理器件(如开关、电压的高低),抗干扰能力强。
- 运算规则简单:二进制的加、减、乘、除等运算规则比十进制简单得多,容易用数字电路实现。
- 逻辑运算方便:可以方便地用二进制数的位来表示逻辑真和假,进行逻辑运算。
三、进制转换
1. 其他进制转十进制(按权展开)
- 公式:将一个进制数按权展开相加,权重为基数的幂次(从个位开始,整数部分为0次幂,向左递增;小数部分为负幂次,向右递减)。
- 示例:
- 二进制数
1011.101
→ 1×2³ + 0×2² + 1×2¹ + 1×2⁰ + 1×2⁻¹ + 0×2⁻² + 1×2⁻³ = 11.625(十进制) - 八进制数
57.6
→ 5×8¹ + 7×8⁰ + 6×8⁻¹ = 47.75(十进制) - 十六进制数
2F.8
→ 2×16¹ + 15×16⁰ + 8×16⁻¹ = 47.5(十进制)
- 二进制数
2. 十进制转其他进制
- 整数部分:除基取余法(从下往上取余数) 步骤:用十进制数不断除以目标基数,直到商为0,余数从下往上排列。
- 小数部分:乘基取整法(从上往下取整数部分) 步骤:用十进制小数部分不断乘以目标基数,直到积的小数部分为0或达到所需精度,每次取乘积的整数部分,从上往下排列。
示例:
将十进制数
25.375
转换为二进制:- 整数部分25:25 ÷ 2 = 12 余1 ↑
12 ÷ 2 = 6 余0 ↑
6 ÷ 2 = 3 余0 ↑
3 ÷ 2 = 1 余1 ↑
1 ÷ 2 = 0 余1 ↑ 所以整数部分为 `11001`
- 小数部分0.375:0.375 × 2 = 0.75 → 整数部分0
0.75 × 2 = 1.5 → 整数部分1
0.5 × 2 = 1.0 → 整数部分1 所以小数部分为 `.011`
- 因此
25.375 = 11001.011
(二进制)
- 整数部分25:25 ÷ 2 = 12 余1 ↑
将十进制数
100
转换为十六进制: 100 ÷ 16 = 6 余4(低位) 6 ÷ 16 = 0 余6(高位) 因此为64
(十六进制)
3. 二进制与八进制、十六进制的转换
二进制转八进制:将二进制数从小数点开始,分别向左(整数部分)和向右(小数部分)每3位一组分组,不足3位的用0补齐,然后每组二进制数转换为对应的八进制数。
- 示例:
11010111.1101
(二进制) 整数部分:分组(011, 010, 111)注意:最高位补0 → 3,2,7 → 327(八进制) 小数部分:分组(110, 100)最低位补0 → 6,4 → .64(八进制) 所以整体为327.64
(八进制)
- 示例:
八进制转二进制:将每一位八进制数转换为3位二进制数(不足3位在高位补0),然后拼接起来。
- 示例:
65.4
(八进制)→ 6→110, 5→101, 4→100 →110101.100
(二进制)
- 示例:
二进制转十六进制:每4位一组分组。
- 示例:
11101011.101101
(二进制) 整数部分:分组(1110, 1011)→ E, B →EB
(十六进制) 小数部分:分组(1011, 0100)注意:最低位补0 → B, 4 →.B4
(十六进制) 所以整体为EB.B4
(十六进制)
- 示例:
十六进制转二进制:将每一位十六进制数转换为4位二进制数,然后拼接。
- 示例:
A3.5C
(十六进制)→ A→1010, 3→0011, 5→0101, C→1100 →10100011.01011100
(二进制)
- 示例:
四、小结
- 计算机使用二进制作为基础。
- 理解不同进制的表示方法(权值)。
- 掌握不同进制之间的转换方法:
- 其他进制转十进制:按权展开。
- 十进制转其他进制:整数部分除基取余,小数部分乘基取整。
- 二进制与八进制、十六进制之间的快速转换:分组法。
五、练习
- 将二进制数
10110.101
转换为十进制数。 - 将十进制数
37.75
转换为二进制数。 - 将八进制数
123
转换为十六进制数(通过二进制中转)。 - 将十六进制数
1A.2F
转换为八进制数(通过二进制中转)。 - 将十进制数
100
分别转换为二进制、八进制和十六进制。
学生笔记原文:
# 计算机进制与转换
## 一、常见的进制
1. **十进制(Decimal)**:
- 基数为10,使用0~9十个数字。
- 示例:123.45 = 1×10² + 2×10¹ + 3×10⁰ + 4×10⁻¹ + 5×10⁻²
2. **二进制(Binary)**:
- 基数为2,使用0和1两个数字。
- 计算机内部使用二进制,因为二进制状态(0和1)易于用物理设备表示(如开和关,高电平和低电平)。
- 示例:101.11(二进制) = 1×2² + 0×2¹ + 1×2⁰ + 1×2⁻¹ + 1×2⁻² = 5.75(十进制)
3. **八进制(Octal)**:
- 基数为8,使用0~7八个数字。
- 示例:123.4(八进制) = 1×8² + 2×8¹ + 3×8⁰ + 4×8⁻¹ = 83.5(十进制)
4. **十六进制(Hexadecimal)**:
- 基数为16,使用0~9和A~F(或a~f)表示,其中A=10,B=11,C=12,D=13,E=14,F=15。
- 在计算机中常用于简化二进制表示(因为与二进制转换方便)。
- 示例:1A.8(十六进制) = 1×16¹ + 10×16⁰ + 8×16⁻¹ = 26.5(十进制)
## 二、为什么计算机使用二进制?
- 物理实现容易:只需要两种稳定状态的物理器件(如开关、电压的高低),抗干扰能力强。
- 运算规则简单:二进制的加、减、乘、除等运算规则比十进制简单得多,容易用数字电路实现。
- 逻辑运算方便:可以方便地用二进制数的位来表示逻辑真和假,进行逻辑运算。
## 三、进制转换
### 1. 其他进制转十进制(按权展开)
- **公式**:将一个进制数按权展开相加,权重为基数的幂次(从个位开始,整数部分为0次幂,向左递增;小数部分为负幂次,向右递减)。
- **示例**:
- 二进制数 `1011.101` → 1×2³ + 0×2² + 1×2¹ + 1×2⁰ + 1×2⁻¹ + 0×2⁻² + 1×2⁻³ = 11.625(十进制)
- 八进制数 `57.6` → 5×8¹ + 7×8⁰ + 6×8⁻¹ = 47.75(十进制)
- 十六进制数 `2F.8` → 2×16¹ + 15×16⁰ + 8×16⁻¹ = 47.5(十进制)
### 2. 十进制转其他进制
- **整数部分:除基取余法**(从下往上取余数)
步骤:用十进制数不断除以目标基数,直到商为0,余数从下往上排列。
- **小数部分:乘基取整法**(从上往下取整数部分)
步骤:用十进制小数部分不断乘以目标基数,直到积的小数部分为0或达到所需精度,每次取乘积的整数部分,从上往下排列。
- **示例**:
- 将十进制数 `25.375` 转换为二进制:
- 整数部分25:25 ÷ 2 = 12 余1 ↑
12 ÷ 2 = 6 余0 ↑
6 ÷ 2 = 3 余0 ↑
3 ÷ 2 = 1 余1 ↑
1 ÷ 2 = 0 余1 ↑ 所以整数部分为 `11001`
- 小数部分0.375:0.375 × 2 = 0.75 → 整数部分0
0.75 × 2 = 1.5 → 整数部分1
0.5 × 2 = 1.0 → 整数部分1 所以小数部分为 `.011`
- 因此 `25.375 = 11001.011`(二进制)
- 将十进制数 `100` 转换为十六进制:
100 ÷ 16 = 6 余4(低位)
6 ÷ 16 = 0 余6(高位) 因此为 `64`(十六进制)
### 3. 二进制与八进制、十六进制的转换
- **二进制转八进制**:将二进制数从小数点开始,分别向左(整数部分)和向右(小数部分)每3位一组分组,不足3位的用0补齐,然后每组二进制数转换为对应的八进制数。
- 示例:`11010111.1101`(二进制)
整数部分:分组(011, 010, 111)注意:最高位补0 → 3,2,7 → 327(八进制)
小数部分:分组(110, 100)最低位补0 → 6,4 → .64(八进制)
所以整体为 `327.64`(八进制)
- **八进制转二进制**:将每一位八进制数转换为3位二进制数(不足3位在高位补0),然后拼接起来。
- 示例:`65.4`(八进制)→ 6→110, 5→101, 4→100 → `110101.100`(二进制)
- **二进制转十六进制**:每4位一组分组。
- 示例:`11101011.101101`(二进制)
整数部分:分组(1110, 1011)→ E, B → `EB`(十六进制)
小数部分:分组(1011, 0100)注意:最低位补0 → B, 4 → `.B4`(十六进制)
所以整体为 `EB.B4`(十六进制)
- **十六进制转二进制**:将每一位十六进制数转换为4位二进制数,然后拼接。
- 示例:`A3.5C`(十六进制)→ A→1010, 3→0011, 5→0101, C→1100 → `10100011.01011100`(二进制)
## 四、小结
- 计算机使用二进制作为基础。
- 理解不同进制的表示方法(权值)。
- 掌握不同进制之间的转换方法:
- 其他进制转十进制:按权展开。
- 十进制转其他进制:整数部分除基取余,小数部分乘基取整。
- 二进制与八进制、十六进制之间的快速转换:分组法。