不灭的焱

革命尚未成功,同志仍须努力 Trae下载

作者:AlbertWen  添加时间:2026-08-21 11:52:55  修改时间:2026-08-24 00:39:28  分类:02.网络硬件  编辑

目录

 

学习计算机、网络、IP 地址、子网划分时,进制是最基础的知识之一

先记住一句话:

进制,本质上就是“逢几进一”。

十进制是“逢 10 进 1”,二进制就是“逢 2 进 1”,八进制就是“逢 8 进 1”,十六进制就是“逢 16 进 1”。

一、什么是“进制”?

我们平时习惯使用的是 十进制 Decimal

例如:

0
1
2
3
4
5
6
7
8
9
10
11
12
...

为什么 9 后面是 10

因为十进制只有:

0 ~ 9

一共 10 个数字。

到了 10,就没有新的单个数字可以表示了,所以:

9 + 1 = 10

这就是:

逢十进一。

二、常见的几种进制

进制 英文 可用数字 特点
二进制 Binary 0、1 逢 2 进 1
八进制 Octal 0~7 逢 8 进 1
十进制 Decimal 0~9 逢 10 进 1
十六进制 Hexadecimal 0~9、A~F 逢 16 进 1

其中计算机领域最重要的是:

二进制
十进制
十六进制

三、二进制是什么?

二进制只能使用两个数字:

0
1

所以二进制的数字变化是:

0
1
10
11
100
101
110
111
1000
1001
...

注意:

二进制 10

不是我们平时说的“十”。

它代表:

十进制 2

也就是说:

二进制 10 = 十进制 2
二进制 11 = 十进制 3
二进制 100 = 十进制 4

四、为什么二进制 10 等于十进制 2?

这就需要理解一个非常重要的概念:

位权

我们先看十进制:

123

实际上它代表:

1 × 100
+
2 × 10
+
3 × 1

也就是:

1 × 10²
+
2 × 10¹
+
3 × 10⁰

所以:

123
= 100 + 20 + 3
= 123

十进制每一位的权重分别是:

... 1000   100   10   1
     10³   10²   10¹  10⁰

五、二进制的位权

二进制同样如此,只不过底数变成了 2

例如:

1011

对应:

1 × 2³
0 × 2²
1 × 2¹
1 × 2⁰

也就是:

8 + 0 + 2 + 1
= 11

所以:

二进制 1011
=
十进制 11

六、必须背下来的二进制位权

如果以后学习:

  • IP 地址
  • 子网掩码
  • CIDR
  • VLAN
  • 网络协议

下面这组数字基本必须熟悉:

二进制位 十进制值
2⁰ 1
2
4
8
2⁴ 16
2⁵ 32
2⁶ 64
2⁷ 128
2⁸ 256
2⁹ 512
2¹⁰ 1024

尤其是:

128
64
32
16
8
4
2
1

建议直接背下来。

因为一个 IPv4 地址的每一段就是:

8 bit

也就是:

128 64 32 16 8 4 2 1

七、二进制转十进制

比如:

11010110

按照位权排列:

二进制:

1   1   0   1   0   1   1   0

对应:

128 64  32  16  8   4   2   1

只看数字为 1 的位置:

128
+64
+16
+4
+2

结果:

214

所以:

11010110₂ = 214₁₀

这里下标:

代表二进制。

₁₀

代表十进制。

八、再举几个二进制转十进制例子

例 1

00000001

只有最后一位是 1:

= 1

所以:

00000001 = 1

例 2

00000010
= 2

例 3

00000100
= 4

例 4

00001000
= 8

例 5

11111111

计算:

128 + 64 + 32 + 16 + 8 + 4 + 2 + 1

等于:

255

所以:

11111111₂ = 255₁₀

这也是为什么 IPv4 每一段最大是:

255

比如:

192.168.1.255

九、为什么 8 位二进制最大是 255?

因为:

11111111

等于:

128
+ 64
+ 32
+ 16
+ 8
+ 4
+ 2
+ 1

等于:

255

所以 8 bit 能表示:

0 ~ 255

总共:

256 个数字

也就是:

2⁸ = 256

注意:

能表示 256 个数,但最大数字是 255,因为从 0 开始。

十、十进制转二进制

有两种非常实用的方法。

方法一:凑数法

例如:

192

我们按照:

128 64 32 16 8 4 2 1

开始凑。

先:

192 - 128 = 64

再:

64 - 64 = 0

所以用了:

128
64

没用:

32 16 8 4 2 1

因此:

128 64 32 16 8 4 2 1
 1   1  0  0  0 0 0 0

所以:

192 = 11000000

这在学习 IP 地址的时候非常好用。

例如:168 转二进制

位权:

128 64 32 16 8 4 2 1

先看:

168 - 128 = 40

64 太大,不要:

0

32 可以:

40 - 32 = 8

16 不要:

0

8 可以:

8 - 8 = 0

所以:

128 64 32 16 8 4 2 1
 1   0  1  0 1 0 0 0

因此:

168 = 10101000

于是:

192.168.1.1

实际上就是:

11000000.10101000.00000001.00000001

十一、十进制转二进制:除 2 取余法

例如:

13

不断除以 2:

13 ÷ 2 = 6  余 1
6  ÷ 2 = 3  余 0
3  ÷ 2 = 1  余 1
1  ÷ 2 = 0  余 1

然后:

从下往上读余数。

所以:

1101

因此:

13₁₀ = 1101₂

验证:

8 + 4 + 0 + 1
= 13

十二、八进制是什么?

八进制:

Octal

只能使用:

0 1 2 3 4 5 6 7

没有:

8
9

所以:

八进制:

0
1
2
3
4
5
6
7
10
11
12
...

这里:

10₈

实际上等于:

8₁₀

十三、八进制转十进制

例如:

157₈

计算:

1 × 8²
+
5 × 8¹
+
7 × 8⁰

也就是:

1 × 64
+
5 × 8
+
7 × 1

结果:

64 + 40 + 7
= 111

所以:

157₈ = 111₁₀

十四、十六进制是什么?

十六进制英文:

Hexadecimal

通常简称:

Hex

十六进制需要表示:

0 ~ 15

但是我们只有:

0 ~ 9

十个数字。

怎么办?

于是规定:

A = 10
B = 11
C = 12
D = 13
E = 14
F = 15

因此:

十进制 十六进制
0 0
1 1
2 2
... ...
9 9
10 A
11 B
12 C
13 D
14 E
15 F
16 10

所以:

10₁₆ = 16₁₀

十五、十六进制转十进制

例如:

2A

因为:

A = 10

所以:

2A₁₆

= 2 × 16¹
+ 10 × 16⁰

= 32 + 10

= 42

所以:

2A₁₆ = 42₁₀

十六、再看一个十六进制

例如:

FF

因为:

F = 15

所以:

FF

= 15 × 16
+ 15

= 240 + 15

= 255

所以:

FF₁₆ = 255₁₀

同时:

11111111₂ = 255₁₀ = FF₁₆

这个关系非常重要。

十七、二进制和十六进制为什么关系特别密切?

因为:

2⁴ = 16

也就是说:

4 位二进制刚好对应 1 位十六进制。

例如:

二进制 十六进制
0000 0
0001 1
0010 2
0011 3
0100 4
0101 5
0110 6
0111 7
1000 8
1001 9
1010 A
1011 B
1100 C
1101 D
1110 E
1111 F

建议把这个表多看几遍。

十八、二进制直接转十六进制

例如:

11010110

从右往左,每 4 位分一组:

1101 0110

分别转换:

1101 = D
0110 = 6

因此:

11010110₂ = D6₁₆

而:

D6₁₆ = 214₁₀

所以:

11010110₂
=
214₁₀
=
D6₁₆

十九、十六进制直接转二进制

反过来也非常简单。

例如:

AF

A:

A = 1010

F:

F = 1111

拼起来:

AF₁₆ = 10101111₂

十进制则是:

10 × 16 + 15
= 175

所以:

AF₁₆
=
10101111₂
=
175₁₀

二十、二进制与八进制之间的关系

因为:

2³ = 8

所以:

3 位二进制 = 1 位八进制。

例如:

10111001

从右往左每 3 位分组。

不足 3 位,前面补 0:

010 111 001

分别转换:

010 = 2

111 = 7

001 = 1

所以:

10111001₂ = 271₈

二十一、四种进制对照表

这张表建议熟悉:

十进制 二进制 八进制 十六进制
0 0000 0 0
1 0001 1 1
2 0010 2 2
3 0011 3 3
4 0100 4 4
5 0101 5 5
6 0110 6 6
7 0111 7 7
8 1000 10 8
9 1001 11 9
10 1010 12 A
11 1011 13 B
12 1100 14 C
13 1101 15 D
14 1110 16 E
15 1111 17 F
16 10000 20 10

二十二、计算机为什么使用二进制?

因为计算机底层电子电路最容易表达两种状态:

有电 / 没电
高电平 / 低电平
开 / 关
True / False

刚好可以对应:

1
0

所以计算机底层大量使用:

010101010101...

二十三、bit 和 byte

学习二进制时还有两个非常重要的概念。

bit

一个二进制位:

0

或者:

1

叫:

bit

中文:

比特 / 位

比如:

10110010

就是:

8 bit

Byte

8 bit = 1 Byte

即:

1 字节 = 8 位

例如:

11001010

就是:

1 Byte

所以:

1 Byte = 8 bit

二十四、为什么 1 Byte 能表示 256 种状态?

因为一个 bit 有:

0
1

两种可能。

8 bit:

2 × 2 × 2 × 2 × 2 × 2 × 2 × 2

也就是:

2⁸
=
256

所以一个字节:

00000000
~
11111111

对应十进制:

0 ~ 255

二十五、这和 IP 地址有什么关系?

IPv4 地址比如:

192.168.1.10

表面看是:

4 个十进制数字

实际上计算机内部是:

4 × 8 bit
=
32 bit

192:

11000000

168:

10101000

1:

00000001

10:

00001010

因此:

192.168.1.10

真正的二进制形式:

11000000.10101000.00000001.00001010

一共:

32 bit

这也是:

IPv4 = 32 位地址

的来源。

二十六、子网掩码为什么必须懂二进制?

比如常见子网掩码:

255.255.255.0

转换成二进制:

11111111.11111111.11111111.00000000

数一下一共有多少个连续的 1

8 + 8 + 8 = 24

所以:

255.255.255.0

也可以写成:

/24

即:

192.168.1.0/24

二十七、再看 /26

例如:

/26

意思就是前面有:

26 个 1

因此:

11111111.11111111.11111111.11000000

最后一段:

11000000

转换十进制:

128 + 64 = 192

所以:

/26

对应:

255.255.255.192

这就是二进制和子网划分最直接的关系。

二十八、几个必须熟记的子网数字

如果你是做网络、运维,这组数字非常重要:

二进制 十进制
00000000 0
10000000 128
11000000 192
11100000 224
11110000 240
11111000 248
11111100 252
11111110 254
11111111 255

所以子网掩码经常看到:

0
128
192
224
240
248
252
254
255

不是巧合。

它们实际上就是连续的二进制 1

二十九、例如 192 是怎么来的?

11000000

对应:

128 64 32 16 8 4 2 1

前两位为 1:

128 + 64
= 192

所以:

11000000₂ = 192₁₀

三十、224 怎么来的?

11100000

就是:

128 + 64 + 32

所以:

224

三十一、240 怎么来的?

11110000

计算:

128 + 64 + 32 + 16

得到:

240

三十二、248 怎么来的?

11111000

计算:

128 + 64 + 32 + 16 + 8

得到:

248

三十三、252 怎么来的?

11111100

计算:

128 + 64 + 32 + 16 + 8 + 4

得到:

252

三十四、254 怎么来的?

11111110

计算:

128 + 64 + 32 + 16 + 8 + 4 + 2

得到:

254

三十五、255 怎么来的?

11111111

计算:

128 + 64 + 32 + 16 + 8 + 4 + 2 + 1

得到:

255

三十六、程序中怎么表示不同进制?

很多编程语言都会这样表示。

二进制

通常:

0b

开头。

例如:

0b1010

代表:

10

八进制

通常:

0o

例如:

0o17

代表:

15

十六进制

通常:

0x

例如:

0xFF

代表:

255

所以你以后在 Rust、Java、C、Python 等语言中看到:

0xFF

不要觉得奇怪。

意思就是:

十六进制 FF

三十七、进制转换的核心规律

实际上所有进制转换,本质上只需要掌握一个公式:

数字 × 进制^位置

比如二进制:

1011

就是:

1×2³ + 0×2² + 1×2¹ + 1×2⁰

八进制:

157

就是:

1×8² + 5×8¹ + 7×8⁰

十进制:

157

就是:

1×10² + 5×10¹ + 7×10⁰

十六进制:

1A7

就是:

1×16² + 10×16¹ + 7×16⁰

你会发现:

规则完全一样,只是底数不同。

三十八、初学者最值得背的内容

真正需要记忆的东西其实不多,重点就是:

  • 二进制只有 0、1
  • 八进制只有 0~7
  • 十进制只有 0~9
  • 十六进制是 0~9 + A~F
  • 二进制位权:128 64 32 16 8 4 2 1
  • 8 bit = 1 Byte
  • 11111111₂ = 255₁₀ = FF₁₆
  • 4 位二进制 = 1 位十六进制
  • 3 位二进制 = 1 位八进制
  • IPv4 一共 32 bit
  • IPv4 每段 8 bit
  • /24 = 255.255.255.0

三十九、给你几道入门练习题

你可以自己先算。

第 1 题

00001010₂ = ?

答案:

8 + 2 = 10

第 2 题

11000000₂ = ?

答案:

128 + 64
= 192

第 3 题

11111111₂ = ?

答案:

255

第 4 题

10₁₀ 转二进制

答案:

00001010

第 5 题

255₁₀ 转十六进制

答案:

FF

第 6 题

1010 1111₂

转十六进制:

1010 = A
1111 = F

所以:

AF

四十、最后用一张图理解进制

可以把几种进制想成不同的“计数规则”:

               数字 15
                  │
       ┌──────────┼───────────┐
       │          │           │
       ▼          ▼           ▼
    二进制      十进制       十六进制

     1111          15           F

再比如:

               数字 255
                  │
       ┌──────────┼───────────┐
       │          │           │
       ▼          ▼           ▼
    二进制      十进制       十六进制

   11111111       255           FF

所以不要把:

11111111
255
FF

理解成三个不同的数。

实际上:

它们是同一个数,只是使用了不同的表示方式。

如果你的下一步是学习 IP 地址与子网划分,最优先把这一串彻底熟悉:

128  64  32  16  8  4  2  1

因为后面的 /24、/25、/26、/27、/28、/29、/30,本质上全部建立在这 8 个二进制位之上。