【GESP】C++三级考试大纲知识点梳理, (2)数据的进制转换
GESP C++三级官方考试大纲中,共有8条考点,本文针对C++(2)号知识点进行总结梳理。
(2)掌握数据的进制转换:二进制、八进制、十进制、十六进制。
计算机中的数据以不同的进制表示。以下是对二进制、八进制、十进制和十六进制的详细介绍及其相互转换的方法。
一、各进制的定义与特点
(一) 二进制(Binary)
- 基数: 2
- 符号:
0
和1
- 特点:
- 是计算机系统的基础语言。
- 易于通过物理电路(高低电平)实现。
- 权值分布: 从右到左,每一位的权值为 $(2^n)$ $(n从0开始)$。
示例: 二进制数 1011
表示 $(1 \times 2^3 + 0 \times 2^2 + 1 \times 2^1 + 1 \times 2^0 = 11)$(十进制)。
(二) 八进制(Octal)
- 基数: 8
- 符号:
0, 1, 2, 3, 4, 5, 6, 7
- 特点:
- 是二进制的简化表示,每3个二进制位对应1个八进制位。
- 权值分布: 从右到左,每一位的权值为 $(8^n) (n从0开始)$。
示例: 八进制数 17
表示 $(1 \times 8^1 + 7 \times 8^0 = 15)$(十进制)。
(三) 十进制(Decimal)
- 基数: 10
- 符号:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9
- 特点:
- 是人类日常使用的数字系统。
- 对应权值为 $(10^n)$。
示例: 十进制数 156
表示 $(1 \times 10^2 + 5 \times 10^1 + 6 \times 10^0 = 156)$。
(四) 十六进制(Hexadecimal)
- 基数: 16
- 符号:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
(A~F
对应 10~15) - 特点:
- 是二进制的简化表示,每4个二进制位对应1个十六进制位。
- 权值分布: 从右到左,每一位的权值为 $(16^n) (n从0开始)$。
示例: 十六进制数 1F
表示 $(1 \times 16^1 + 15 \times 16^0 = 31)$(十进制)。
二、 进制之间的转换
(一) 二进制与十进制转换
- 二进制转十进制:
- 按位展开,乘以对应的 $(2^n)$,求和。
- 示例:
1011
转十进制
$(1 \times 2^3 + 0 \times 2^2 + 1 \times 2^1 + 1 \times 2^0 = 11)$。
- 十进制转二进制:
- 使用“除2取余法”,逆序排列余数。
- 示例:$(11)$ 转二进制
$(11 \div 2 = 5)$ 余 $(1)$
$(5 \div 2 = 2)$ 余 $(1)$
$(2 \div 2 = 1)$ 余 $(0)$
$(1 \div 2 = 0)$ 余 $(1)$,结果:1011
。
(二) 二进制与八进制转换
- 二进制转八进制:
- 每3位一组(从右到左),不足补0,按组计算。
- 示例:
110101
转八进制
分组:110 101
,分别计算:6
和5
,结果:65
。
- 八进制转二进制:
- 每个八进制位转换为3位二进制。
- 示例:
65
转二进制
6
转二进制为110
,5
转二进制为101
,结果:110101
。
(三) 二进制与十六进制转换
- 二进制转十六进制:
- 每4位一组(从右到左),不足补0,按组计算。
- 示例:
11010111
转十六进制
分组:1101 0111
,分别计算:D
和7
,结果:D7
。
- 十六进制转二进制:
- 每个十六进制位转换为4位二进制。
- 示例:
D7
转二进制
D
转二进制为1101
,7
转二进制为0111
,结果:11010111
。
(四) 十进制与八进制转换
- 十进制转八进制:
- 使用“除8取余法”,逆序排列余数。
- 示例:$(156)$ 转八进制
$(156 \div 8 = 19)$ 余 $(4)$
$(19 \div 8 = 2)$ 余 $(3)$
$(2 \div 8 = 0)$ 余 $(2)$,结果:234
。
- 八进制转十进制:
- 按位展开,乘以对应的 $(8^n)$,求和。
- 示例:
234
转十进制
$(2 \times 8^2 + 3 \times 8^1 + 4 \times 8^0 = 156)$。
(五) 十进制与十六进制转换
- 十进制转十六进制:
- 使用“除16取余法”,逆序排列余数。
- 示例:$(254)$ 转十六进制
$(254 \div 16 = 15)$ 余 $(14 (E))$
$(15 \div 16 = 0)$ 余 $(15 (F))$,结果:FE
。
- 十六进制转十进制:
- 按位展开,乘以对应的 $(16^n)$,求和。
- 示例:
FE
转十进制
$(15 \times 16^1 + 14 \times 16^0 = 254)$。
(六) 八进制与十六进制转换
- 八进制转十六进制:
- 先将八进制转换为二进制,再将二进制转换为十六进制。
- 示例:
65
(八进制) →110101
(二进制) →35
(十六进制)。
- 十六进制转八进制:
- 先将十六进制转换为二进制,再将二进制转换为八进制。
- 示例:
2F
(十六进制) →00101111
(二进制) →57
(八进制)。
三、总结
转换方向 | 方法 |
---|---|
二进制 → 十进制 | 按位展开,乘以对应的 $(2^n)$,求和。 |
十进制 → 二进制 | 除2取余法,逆序排列。 |
二进制 → 八进制 | 每3位一组,不足补0,按组计算。 |
八进制 → 二进制 | 每个八进制位转换为3位二进制。 |
二进制 → 十六进制 | 每4位一组,不足补0,按组计算。 |
十六进制 → 二进制 | 每个十六进制位转换为4位二进制。 |
十进制 → 八进制 | 除8取余法,逆序排列。 |
八进制 → 十进制 | 按位展开,乘以对应的 $(8^n)$,求和。 |
十进制 → 十六进制 | 除16取余法,逆序排列。 |
十六进制 → 十进制 | 按位展开,乘以对应的 $(16^n)$,求和。 |
这些进制之间的转换是计算机科学中的基础知识,广泛用于计算机编程、网络通信和硬件设计等领域。
所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code
GESP各级别考纲要点、知识拓展和练习题目清单详见C++学习项目主页
“luogu-”系列题目已加入洛谷Java、C++初学团队,作业清单,可在线评测,团队名额有限,欢迎加入。
“bcqm-”系列题目可在编程启蒙题库进行在线评测。
本文由作者按照 CC BY 4.0 进行授权