吃透四大进制:二进制、八进制、十进制、十六进制(概念+实战转换)

508 阅读11分钟

在计算机世界里,进制就像连接现实与机器的“翻译官”——我们日常计数用十进制,计算机底层只认二进制,而八进制、十六进制则是简化二进制的“工具人”。很多编程、运维初学者刚接触时,总会被“满几进一”“位权”“转换规则”搞晕,甚至觉得“没必要学,用到再查就行”。但其实,吃透四大进制的核心逻辑,不仅能帮你读懂代码里的十六进制颜色值、内存地址,更能理解计算机存储数据的底层原理,让你在学习编程、硬件相关知识时少走很多弯路。

今天,就来系统梳理一下二进制、八进制、十进制、十六进制的核心概念,再结合简单易懂的实例,把它们之间的相互转换方法讲透,全程无晦涩术语,新手也能轻松跟上。

一、四大进制核心概念解析(先懂“是什么”,再学“怎么转”)

所有进制的本质,都是“计数进位规则”——说白了,就是“数到几就进一位”。我们最熟悉的十进制,是“满10进1”;而计算机常用的二进制,是“满2进1”,以此类推。不同进制的区别,核心在于「基数」(满几进一的“几”)和「数位权值」(每个位置代表的数值大小)。

(一)十进制:我们最熟悉的“日常进制”

「基数」:10(满10进1,数字范围:0-9)

「核心特点」:人类最常用的进制,源于手指计数(10根手指),日常购物、记账、计数全靠它。

「位权规则」:从右往左,每个数位的权值是10的n次方(n从0开始递增)。比如数字“123”,拆解后就是:

1×10²(百位,10的2次方) + 2×10¹(十位,10的1次方) + 3×10⁰(个位,10的0次方) = 100 + 20 + 3 = 123

这是我们从小就熟悉的逻辑,也是所有进制转换的“基础参照”。

(二)二进制:计算机的“母语”

「基数」:2(满2进1,数字范围:0-1)

「核心特点」:计算机底层唯一能识别的进制,因为计算机的硬件(晶体管)只有“通电”和“断电”两种状态,对应二进制的“1”和“0”。不管是我们看到的文字、图片、视频,最终都会被转换成一串0和1的组合,交给计算机处理。

「位权规则」:从右往左,每个数位的权值是2的n次方(n从0开始递增)。比如二进制“1010”,拆解后就是:

1×2³ + 0×2² + 1×2¹ + 0×2⁰ = 8 + 0 + 2 + 0 = 10(十进制)

注意:二进制的书写,通常会在数字后加下标“2”(如1010₂),避免和其他进制混淆。

(三)八进制:二进制的“简化版1.0”

「基数」:8(满8进1,数字范围:0-7)

「核心特点」:早期计算机编程中,用来简化二进制的进制——因为3位二进制数,恰好能对应1位八进制数(2³=8),能把冗长的二进制串缩短三分之二,方便程序员阅读和书写。现在虽然用得不如十六进制多,但在某些硬件编程、嵌入式开发中仍会用到。

「位权规则」:从右往左,每个数位的权值是8的n次方(n从0开始递增)。比如八进制“12”,拆解后就是:

1×8¹ + 2×8⁰ = 8 + 2 = 10(十进制)

书写时,通常在数字后加下标“8”(如12₈)。

(四)十六进制:二进制的“简化版2.0”(最常用)

「基数」:16(满16进1,数字范围:0-9、A-F)

「核心特点」:目前最常用的二进制简化进制,因为4位二进制数,恰好能对应1位十六进制数(2⁴=16),简化效果比八进制更好(能把二进制串缩短四分之三)。我们平时看到的代码中,十六进制无处不在——比如HTML的颜色值(#FF0000对应红色)、内存地址(如0x7FFF)、编程中的常量定义等。

「关键注意」:因为16比10大,0-9不够用,所以用A-F(不区分大小写)表示10-15,即A=10、B=11、C=12、D=13、E=14、F=15。

「位权规则」:从右往左,每个数位的权值是16的n次方(n从0开始递增)。比如十六进制“1A”,拆解后就是:

1×16¹ + 10×16⁰ = 16 + 10 = 26(十进制)

书写时,通常在数字前加“0x”(如0x1A),或在数字后加下标“16”(如1A₁₆),这是编程中的通用规范。

二、四大进制相互转换(实战为主,记方法不记死数)

转换的核心逻辑:所有进制,都能通过“十进制”作为中间桥梁,实现相互转换;而二进制与八进制、十六进制,因为存在“位权对应”关系(3位二进制=1位八进制,4位二进制=1位十六进制),可以直接转换,无需经过十进制,效率更高。

下面分4种核心转换场景,结合实例讲解,每个步骤都讲透,新手跟着练1-2遍就能掌握。

(一)场景1:其他进制 → 十进制(最基础,通用方法:按权展开求和)

不管是二进制、八进制、十六进制,转换成十进制的方法都一样:找到每个数位的“数字”和“位权”,用数字×位权,再把所有结果相加。这也是我们前面解析概念时用到的方法,这里再举3个典型例子,巩固一下。

示例1:二进制 → 十进制(1011₂ → ?₁₀)

步骤:从右往左,依次计算每个数位的数字×位权(2⁰、2¹、2²、2³...),求和即可。

计算过程:1×2³ + 0×2² + 1×2¹ + 1×2⁰ = 8 + 0 + 2 + 1 = 11₁₀

示例2:八进制 → 十进制(105₈ → ?₁₀)

步骤:数字×位权(8⁰、8¹、8²...),求和。

计算过程:1×8² + 0×8¹ + 5×8⁰ = 64 + 0 + 5 = 69₁₀

示例3:十六进制 → 十进制(0x2F → ?₁₀)

步骤:先把字母F转换成数字15,再按权展开求和(16⁰、16¹...)。

计算过程:2×16¹ + 15×16⁰ = 32 + 15 = 47₁₀

小结:这种转换方法最通用,记住“按权展开求和”,无论哪种进制转十进制,都能套用。

(二)场景2:十进制 → 其他进制(通用方法:除基取余,逆序排列)

十进制转换成二进制、八进制、十六进制,核心方法是「除基取余法」,步骤分3步:

  1. 用十进制数 ÷ 目标进制的基数(转二进制÷2,转八进制÷8,转十六进制÷16),得到商和余数;

  2. 用第一步得到的商,继续 ÷ 基数,得到新的商和余数;

  3. 重复第二步,直到商为0,停止计算;

  4. 把所有得到的余数,从“最后一个余数”到“第一个余数”逆序排列,就是目标进制的数字。

重点提醒:转十六进制时,如果余数是10-15,要转换成对应的A-F。

示例1:十进制 → 二进制(25₁₀ → ?₂)

计算过程:

25 ÷ 2 = 12 → 余数1

12 ÷ 2 = 6 → 余数0

6 ÷ 2 = 3 → 余数0

3 ÷ 2 = 1 → 余数1

1 ÷ 2 = 0 → 余数1

余数逆序排列:11001 → 25₁₀ = 11001₂

示例2:十进制 → 八进制(78₁₀ → ?₈)

计算过程:

78 ÷ 8 = 9 → 余数6

9 ÷ 8 = 1 → 余数1

1 ÷ 8 = 0 → 余数1

余数逆序排列:116 → 78₁₀ = 116₈

示例3:十进制 → 十六进制(130₁₀ → ?₁₆)

计算过程:

130 ÷ 16 = 8 → 余数2

8 ÷ 16 = 0 → 余数8

余数逆序排列:82 → 130₁₀ = 0x82(或82₁₆)

补充示例(含字母):十进制 → 十六进制(250₁₀ → ?₁₆)

250 ÷ 16 = 15 → 余数10(对应A)

15 ÷ 16 = 0 → 余数15(对应F)

余数逆序排列:FA → 250₁₀ = 0xFA

(三)场景3:二进制 ↔ 八进制(直接转换,无需十进制)

核心依据:3位二进制数 = 1位八进制数(因为2³=8),转换分两种情况,步骤简单。

  1. 二进制 → 八进制(步骤:分组→转换)

① 从二进制数的「右边」开始,每3位分成一组;

② 如果最左边的一组不足3位,在左边补0(补0不改变二进制的数值);

③ 把每组3位二进制数,转换成对应的1位八进制数(按权展开求和,或直接记对应表);

④ 把所有转换后的八进制数连起来,就是结果。

示例:二进制 → 八进制(1101011₂ → ?₈)

步骤1:分组(从右往左,每3位一组):1 101 011

步骤2:最左边不足3位,补0:001 101 011

步骤3:每组转换:001₂=1₈、101₂=5₈、011₂=3₈

步骤4:连起来:153 → 1101011₂ = 153₈

  1. 八进制 → 二进制(步骤:拆数→补位)

① 把每个八进制数,转换成对应的3位二进制数(不足3位,在左边补0);

② 把所有转换后的二进制数连起来,去掉最左边多余的0(如果有),就是结果。

示例:八进制 → 二进制(207₈ → ?₂)

步骤1:拆数转换:2→010、0→000、7→111

步骤2:连起来:010000111

步骤3:去掉最左边多余的0:10000111 → 207₈ = 10000111₂

(四)场景4:二进制 ↔ 十六进制(直接转换,最常用)

核心依据:4位二进制数 = 1位十六进制数(因为2⁴=16),转换逻辑和二进制↔八进制完全一致,只是分组位数从3位变成4位。

  1. 二进制 → 十六进制(步骤:分组→转换)

① 从二进制数的「右边」开始,每4位分成一组;

② 最左边不足4位,补0;

③ 每组4位二进制数,转换成对应的1位十六进制数(余数10-15对应A-F);

④ 连起来,就是结果(通常加0x前缀)。

示例:二进制 → 十六进制(1101101001₂ → ?₁₆)

步骤1:分组(从右往左,每4位一组):11 0110 1001

步骤2:最左边补0:0011 0110 1001

步骤3:每组转换:0011₂=3、0110₂=6、1001₂=9

步骤4:连起来:369 → 1101101001₂ = 0x369

补充示例(含字母):二进制 → 十六进制(11110101₂ → ?₁₆)

分组:1111 0101 → 1111₂=15(F)、0101₂=5 → 结果:0xF5

  1. 十六进制 → 二进制(步骤:拆数→补位)

① 把每个十六进制数,转换成对应的4位二进制数(不足4位,左边补0);

② 连起来,去掉最左边多余的0,就是结果。

示例:十六进制 → 二进制(0x4A → ?₂)

步骤1:拆数转换:4→0100、A(10)→1010

步骤2:连起来:01001010

步骤3:去掉多余的0:1001010 → 0x4A = 1001010₂

三、总结+避坑提醒(新手必看)

学到这里,四大进制的概念和转换方法就基本吃透了。最后梳理几个核心要点,帮你巩固记忆,避免踩坑:

1. 核心总结

① 进制本质:满基数进1,位权是基数的n次方(n从0开始,从右往左递增);

② 转换桥梁:十进制是“中间站”,所有进制都能通过它相互转换;

③ 快速转换:二进制↔八进制(3位一组)、二进制↔十六进制(4位一组),无需经过十进制,效率最高;

④ 常用规范:十六进制加0x前缀,二进制、八进制加对应下标,避免混淆。

2. 新手避坑提醒

① 十进制转其他进制时,“除基取余”一定要「逆序排列」余数,这是最容易出错的地方;

② 十六进制的A-F对应10-15,区分大小写(编程中通常用大写,但小写也能识别);

③ 二进制分组时,一定要「从右边开始分组」,不足位补0(左边补0,不是右边);

④ 不要死记硬背转换结果,重点记方法——比如记住“按权展开求和”“除基取余”,不管遇到什么数字,都能算出来。

其实,进制转换看似复杂,只要多练几个例子,就能熟练掌握。