进制转换是计算机底层原理、编程入门、笔试面试中非常基础且高频的知识点。以下将用最直白的计算步骤 + 完整实例,讲解 2/8/10/16 进制互转方法,新手也能轻松掌握。
在开始之前我们需要先了解一下编程语言的前缀
-
二进制:
0B/0b开头 -
八进制:
0开头 -
十进制:无前缀
-
十六进制:
0x/0X开头
1. 二进制 ↔ 十进制
1.1 二进制 → 十进制
方法
从右往左,每位数字 × 2ⁿ,然后全部相加
- 从右往左依次标序号:0、1、2、3……
- 每一位数字 × 2 的对应次方
- 全部相加结果即为十进制
举例
二进制:101101
1×2⁵ + 0×2⁴ + 1×2³ + 1×2² + 0×2¹ + 1×2⁰
= 32 + 0 + 8 + 4 + 0 + 1
= 45
结果为:45
1-2. 十进制 → 二进制
方法
除二取余,倒序排列
-
不断除以 2,依次记录余数
-
直到商为 0 停止计算
-
余数从下往上拼接,就是二进制结果
-
编程语言前缀:
0B或0b
举例
十进制:45
45 / 2 = 22 余数 1
22 / 2 = 11 余数 0
11 / 2 = 5 余数 1
5 / 2 = 2 余数 1
2 / 2 = 1 余数 0
1 / 2 = 0 余数 1
结果为:0B101101(二进制开头为0B)
2. 二进制 ↔ 八进制
2-1. 二进制 → 八进制
方法
-
把二进制数从右往左每 3 位分一组
-
最左边不够 3 位,前面补 0
-
每组按 4、2、1 相加,得到一个数字
-
把这些数字按顺序写出来 → 就是八进制
举例
二进制:101101
101 101
(1*4) + (0*2) + (1*1) = 5
(1*4) + (0*2) + (1*1) = 5
结果为:055(八进制开头为0)
2-2. 八进制 → 二进制
方法
一位八进制 → 拆成 3 位二进制
- 每位对照
4 2 1转为 3 位二进制 - 不足 3 位前面补 0
- 拼接后去掉开头多余的 0
举例
八进制:055(前缀 0 不算入数字)
055
0:000 (4*0)+ (2*0) + (1*0) = 0
5:101 (4*1)+ (2*0) + (1*1) = 5
5:101 (4*1)+ (2*0) + (1*1) = 5
结果为:0B101101(二进制开头为0B)
3. 二进制 ↔ 十六进制
3-1. 二进制 → 十六进制
方法
-
从右往左每 4 位 分一组
-
左边不足 4 位,前面补 0
-
每组按
8 4 2 1计算 -
10 ~ 15 对应 A ~ F
举例
二进制:101101
补位:0010 1101
0010 = 2
1101 = 13 → D
结果为:0X2D(十六进制开头为0X)
3-2. 十六进制 → 二进制
方法
-
1 位十六进制 → 拆成 4 位二进制
-
直接拼接即可
举例
十六进制:0X2D
2 → 0010
D → 1101
结果为:0B101101(二进制开头为0B)
4. 十进制 ↔ 十六进制
4-1. 十进制 → 十六进制
方法
除 16 取余,倒序排列
- 余数 10→A、11→B、12→C、13→D、14→E、15→F
举例
十进制:45
45 / 16 = 2 余 13 → D
2 / 16 = 0 余 2
16 × 2 = 32
45 − 32 = 13
所以余数是 13
结果为:0X2D(十六进制开头为0X)
4-2. 十六进制 → 十进制
方法
从右往左,每位 × 16ⁿ,然后求和
举例
十六进制:0X2D
D * 16⁰ = 13 * 1 = 13
2 * 16¹ = 2 * 16 = 32
总和:13 + 32 = 45
结果为:45
5. 快速互转总路线(万能思路)
-
任何进制 → 十进制:按位 × 基数ⁿ 相加
-
十进制 → 任何进制:除基取余,倒序排列
-
二 ↔ 八:3 位分组
-
二 ↔ 十六:4 位分组
-
八 ↔ 十六:统一用二进制中转