编程入门必看!二进制 / 十进制 / 八进制 / 十六进制互转保姆级教程

9 阅读3分钟

进制转换是计算机底层原理、编程入门、笔试面试中非常基础且高频的知识点。以下将用最直白的计算步骤 + 完整实例,讲解 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 停止计算

  • 余数从下往上拼接,就是二进制结果

  • 编程语言前缀:0B0b

举例

十进制: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 = 213 → D 
2 / 16 = 02

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 位分组

  • 八 ↔ 十六:统一用二进制中转