引言:为什么要学习进制?
当我们在电脑上敲下一段文字、在手机上玩游戏、或者在网页里写下一行代码时,很少有人会去想:这些内容在计算机内部究竟是怎样被存储和处理的。
其实,所有的数据——不管是文字、图片,还是视频、音乐,最后都会以 0 和 1 的形式存放在计算机的底层世界里。
这个“0”和“1”的世界,就是我们常说的 二进制。
不过,二进制并不是唯一存在的数数方式。我们日常生活中使用的 十进制,以及在计算机相关领域里会遇到的 八进制、十六进制,它们都属于“进制”。
理解这些进制,就像是学会不同的语言。十进制是我们每天在用的“母语”,而二进制、十六进制,则是计算机的“母语”。掌握它们,可以帮助我们更好地理解计算机的运作逻辑,也能在学习编程、网页开发的过程中更加得心应手。
什么是进制?
简单来说,进制就是一种“数数的方法”。
在日常生活里,我们习惯用“十进制”来数数,也就是数到 9 之后,下一位就要进位,变成 10。
“满几进一”就是进制的核心。
- 十进制:满 10 进一。
- 二进制:满 2 进一。
- 八进制:满 8 进一。
- 十六进制:满 16 进一。
我们常说“某某进制”,其实就是在说:这个数数体系里,一共有多少个“基本数字”可以使用。
比如:
- 十进制有 10 个数字(0–9);
- 二进制只有 2 个数字(0 和 1);
- 八进制有 8 个数字(0–7);
- 十六进制则多达 16 个数字(0–9 + A–F)。
理解这一点,你就能把进制看作是不同的“数数规则”。它们看上去不同,但本质上都是在表达“数量”的方式。
十进制(Decimal):我们最熟悉的数数方式
在所有的进制里,十进制是我们最熟悉、最自然的一种。因为从小到大,我们数数、写数字、算数学题,几乎都是在用十进制。
1. 满十进一的规则
顾名思义,十进制的特点就是:满十进一。
我们来复习一下最基本的数数过程:
- 从 0 开始,依次是 1、2、3、4、5、6、7、8、9;
- 当个位“数满了”,再加 1 的时候,就要进位:个位清零,十位变成 1,这样就得到了 10;
- 接着是 11、12、13……直到 19;
- 再加 1,就变成 20;
- 依此类推,十位满了进百位,百位满了进千位……
这个过程,我们小时候学加法的时候就接触过,其实它背后的规律就是 进制的本质。
2. 单位数字:只有 0–9
很多同学可能会疑惑:“我们日常生活里不是有无数个数字吗?怎么会说十进制里只有 10 个数字呢?”
这里的“数字”,指的是 单位数字(digit),也就是构成数字的最小符号。
- 在十进制里,单位数字一共有 10 个:0, 1, 2, 3, 4, 5, 6, 7, 8, 9。
- 其他像 10、11、123 这样的数,实际上是由多个单位数字组合而成的数值。
所以,十进制的“核心字母表”只有 0–9 这 10 个符号。就像字母表只有 26 个字母一样,但通过不同的排列组合,我们可以拼写出无数个单词。
3. 位权的含义
十进制里的每一位都有它自己的“权重”:
- 个位:代表有多少个 1;
- 十位:代表有多少个 10;
- 百位:代表有多少个 100;
- 千位:代表有多少个 1000;
比如数字 2345:
- 个位上的 5,表示 5 个 1;
- 十位上的 4,表示 4 个 10;
- 百位上的 3,表示 3 个 100;
- 千位上的 2,表示 2 个 1000。
所以:
2345 = 2000 + 300 + 40 + 5
这就是十进制数值的分解原理。
二进制(Binary):计算机的语言
如果说十进制是我们人类最熟悉的数数方式,那么 二进制就是计算机最熟悉的“语言”。
1. 满二进一的规则
二进制的特点很简单:满二进一。
它的数数方式和十进制类似,只不过:
- 十进制有 0–9 共 10 个数字;
- 二进制只有 0 和 1 共 2 个数字。
所以,数数过程是这样的:
- 从 0 开始,然后是 1;
- 继续加 1,就要进位了:个位清零,前一位变成 1,于是得到 10;
- 接着是 11;
- 再加 1,个位满 2,要进位,于是变成 100;
- 然后是 101、110、111……
二进制数表(前几个数):
| 十进制 | 二进制 |
|---|---|
| 0 | 0 |
| 1 | 1 |
| 2 | 10 |
| 3 | 11 |
| 4 | 100 |
| 5 | 101 |
| 6 | 110 |
| 7 | 111 |
| 8 | 1000 |
可以看到,二进制的写法虽然不同,但表达的数量和十进制是一致的。
2. 为什么计算机使用二进制?
原因很直观:
- 在电子电路里,一个开关只有两种状态:通电(1) 和 断电(0)。
- 如果我们用十进制,就需要能稳定区分 10 种状态,这在物理实现上几乎不可能。
- 所以,最简单、最稳定的方法,就是用二进制来存储和处理所有信息。
因此,计算机的底层世界就是由无数个 0 和 1 组成的。
无论是你在玩游戏、看电影,还是写网页,所有的数据最后都会被转换成二进制来保存和运算。
3. 二进制的单位数字
二进制里只有两个单位数字:0 和 1。
在这里,你永远不会看到数字“2”,因为它已经意味着要进位了。
就像十进制里,单个数字不能出现“10”一样,二进制的世界里也只承认“0”和“1”。
八进制(Octal):了解即可
在十进制和二进制之间,其实还存在一种叫做 八进制 的进制。
不过,它在现实生活和计算机里都比较少见,我们只需要了解一下即可。
1. 满八进一的规则
八进制的规则是:满八进一。
- 它的单位数字一共有 8 个:0, 1, 2, 3, 4, 5, 6, 7。
- 当数到 7 之后,再加 1 的时候,就要进位了,变成 10(注意,这里的 “10” 表示八进制的八,而不是十进制的十)。
比如八进制的数数过程:
- 0, 1, 2, 3, 4, 5, 6, 7;
- 再加 1 → 10(相当于十进制里的 8);
- 11, 12, … 17;
- 再加 1 → 20(相当于十进制里的 16)。
八进制和十进制对照表(部分):
| 十进制 | 八进制 |
|---|---|
| 0 | 0 |
| 1 | 1 |
| 7 | 7 |
| 8 | 10 |
| 9 | 11 |
| 15 | 17 |
| 16 | 20 |
2. 生活中的影子
在现代生活里,我们几乎用不到八进制。
可能会在一些成语或者旧制衡量方式中见到,比如:
- “半斤八两” → 就源于过去的重量单位里,1 斤 = 16 两,所以半斤就是 8 两。这里就和“八进制”的思路有点像。
不过除了这种文化遗留的说法,现实中基本不会再使用八进制。
3. 在计算机中的应用
在计算机世界里,八进制的使用也非常少。
早期它偶尔会被用来简化二进制表示(因为一个八进制位正好对应 3 个二进制位),但随着十六进制的普及,八进制的地位越来越弱。
十六进制(Hexadecimal):二进制的便捷表示
相比八进制,十六进制在计算机领域就重要得多了。它的特点是:满十六进一。
1. 单位数字:0–9 + A–F
十六进制需要 16 个单位数字。
但是我们常见的阿拉伯数字只有 0–9 共 10 个,那还差 6 个怎么办?
于是,人们引入了字母:
- A = 10
- B = 11
- C = 12
- D = 13
- E = 14
- F = 15
这样,就凑齐了 16 个基本符号:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
所以在十六进制里:
- 数到 9 之后,接下来就是 A、B、C、D、E、F;
- 再加 1,就进位成 10(注意这里的 “10” 是十六进制的数,等价于十进制里的 16)。
2. 数数示例
十进制和十六进制对照表(前 20 个数):
| 十进制 | 十六进制 |
|---|---|
| 0 | 0 |
| 1 | 1 |
| 9 | 9 |
| 10 | A |
| 11 | B |
| 12 | C |
| 13 | D |
| 14 | E |
| 15 | F |
| 16 | 10 |
| 17 | 11 |
| 18 | 12 |
| 19 | 13 |
这样就能理解:十六进制其实和十进制一样,只是换了一套“符号表”。
3. 为什么要用十六进制?
在日常开发里,我们不会直接用二进制来书写或阅读数据,因为二进制数太长了。
举个例子:
- 一个字节(Byte) = 8 个二进制位(bit)。
- 如果写成二进制,可能是 11111111。
- 但如果换算成十六进制,就简洁成了 FF。
这样,表示更短、更直观,阅读和记录都更加方便。
4. 常见应用
你可能会在很多地方见到十六进制:
- 颜色表示:网页开发里常见的
#FFFFFF(白色)、#000000(黑色),其实就是用十六进制表示的颜色值。 - 内存地址:调试程序时,经常会看到形如
0x1A2B的地址。 - 文件查看:用“十六进制编辑器”打开文件时,你会发现里面充满了 A–F 和 0–9 的组合。
所以,十六进制是计算机世界里非常常见、非常实用的一种进制。
计算机中的存储单位
前面我们提到:计算机底层的一切数据,最终都会以二进制(0 和 1)来表示和存储。
那这些 0 和 1 是怎样被组织和使用的呢?这就涉及到计算机的存储单位。
1. 位(bit)
- bit(比特,简称 b) 是计算机中最小的存储单位。
- 它只能存放两种状态:0 或 1。
- 你可以把它想象成一个很小的“格子”,里面要么有电(1),要么没电(0)。
2. 字节(Byte)
- 单独一个 bit 太小,计算机通常是 8 个 bit 作为一组,称为 1 Byte(字节,简称 B)。
- 也就是说:1 B = 8 b。
- 举个例子:一个字母
A在计算机中通常就占用 1 个字节。
3. 常见存储单位换算
计算机世界里,我们经常会听到 KB、MB、GB、TB 这些单位,它们之间的关系是:
- 1 KB(千字节) = 1024 B
- 1 MB(兆字节) = 1024 KB
- 1 GB(吉字节) = 1024 MB
- 1 TB(特字节) = 1024 GB
- 1 PB(拍字节) = 1024 TB
注意:这里的进位是 1024 而不是 1000。
这是因为计算机使用的是二进制,1024 = 2¹⁰,非常适合二进制的表示。
4. 为什么最小操作单位是字节?
从物理存储的角度看,bit 是最小的单元。
但在编程和系统操作中,最小能直接操作的单位是字节(Byte)。
换句话说:
- 你不能单独修改某一个 bit;
- 你最少得以 1 个字节(8 个 bit) 为单位去操作数据。
这也是为什么我们在保存文件时,即使内容很小(比如只有 1 个字母),它至少也要占用 1 个字节的存储空间。
进制的实际应用与转换
学了十进制、二进制、八进制和十六进制后,很多人可能会问:这些进制在实际开发中到底怎么用?我真的需要天天去手写二进制吗?
答案是:不用。
因为二进制虽然是计算机的底层语言,但它对于人类来说太冗长、太不直观了。
1. 二进制为什么不直接用?
假设我们要写一个字节的数据:
- 用二进制表示可能是:
11111111(8 个数字)。 - 如果是两个字节,就要写成:
11111111 11111111(16 个数字)。 - 当数据量更大时,二进制写法会变得极其难读,几乎没办法人工处理。
所以,二进制适合机器使用,不适合人类直接操作。
2. 十六进制的简化作用
为了让人类能更轻松地阅读数据,我们通常把二进制转换成十六进制:
11111111(二进制) =FF(十六进制)11111111 11111111(二进制) =FFFF(十六进制)
你可以看到:同样的内容,十六进制更短、更直观,非常适合人来阅读和书写。
这就是为什么在编程、网页开发、操作系统调试中,我们经常会看到十六进制的身影。
3. 常见的应用场景
- 颜色表示:网页中的
#FF0000就是红色,#00FF00是绿色,这些颜色值本质上就是十六进制数。 - 内存地址:在调试程序时,经常会看到
0x1A2B这样的地址,其中的0x就表示这是一个十六进制数。 - 文件分析:使用十六进制编辑器打开文件,里面满屏的 A–F 和 0–9,都是十六进制表示的数据。
4. 如何进行进制转换?
如果你想在学习或工作中实际操作进制转换,不用手算,直接用电脑就行:
- Windows 系统:自带的“计算器” → 切换到 程序员模式,即可在二进制、八进制、十进制、十六进制之间互相转换。
- Mac 系统:同样在“计算器”中提供了进制转换功能。
- 当然,你也可以用在线工具或编程语言(如 Python 的
bin()、hex()函数)来完成进制转换。
5. 小结
- 日常生活 → 我们用十进制。
- 计算机底层 → 它用二进制存储和运算。
- 人类开发和阅读 → 我们通常用十六进制来简化二进制的表示。
- 八进制 → 了解即可,在现代开发中很少用。
总结
通过这一篇文章,我们从最熟悉的十进制开始,一步步认识了二进制、八进制和十六进制。
- 十进制:日常生活中最常见的进制,满十进一。
- 二进制:计算机底层的语言,只有 0 和 1。
- 八进制:曾经在早期计算机中用过,现在几乎不用,了解即可。
- 十六进制:阅读和表示二进制的简便方式,在编程和网页开发中应用广泛。
除此之外,我们还理解了 bit(位)、Byte(字节)、KB、MB、GB 等存储单位,以及它们和进制之间的关系。
如果你是初学者,不必被复杂的进制转换吓倒。记住这几点就够了:
- 十进制是人类习惯的数数方式。
- 二进制是计算机的底层语言。
- 十六进制是二进制的简化表示,经常会遇到。
- 八进制只要知道存在就行。
当你在写网页、学习编程或者调试代码时,再次遇到这些概念,就不会再觉得陌生了。

南希说









