文档

主题 1 · 数据表示

二进制、十进制与十六进制

计算机为什么用二进制计数,如何在二进制、十进制和十六进制之间转换,以及十六进制用在哪里。

第 1 课,共 4 课大纲 1.1更新于 2026年10月31日

为什么是二进制?

计算机由数十亿个叫作晶体管的微小开关组成。每个开关不是关就是开,所以最自然的存储方式就是只用两个数字:0 和 1。单个 0 或 1 叫作一个位(bit,binary digit)。

计算机处理的每一个数字、字母、声音和图片,都以位的组合来存储。数据必须先转换成二进制,计算机才能处理它。

核心概念: 二进制是以 2 为基数的。每一位的位值都是它右边一位的两倍:1、2、4、8、16、32、64、128。

位值

十进制(以 10 为基数)的位值是 1、10、100、1000。二进制同理,只是位值换成 2 的幂。读一个二进制数时,把下面写着 1 的那些位值加起来即可。

在下面试一试。点击任意一位来翻转它,看看十进制值如何变化。你能拼出 75 吗?(提示:64 + 8 + 2 + 1。)

8 位二进制探索器可交互
128
64
32
16
8
4
2
1
十进制 75
64 + 8 + 2 + 1 = 75
8 位可以存储 256 个不同的值,从 00000000(0)到 11111111(255)。

十进制转二进制

方法一,减去位值:从能放得下的最大位值开始,写 1,减掉它,再往右移。以 75 为例:64 放得下(剩 11),32 不行,16 不行,8 放得下(剩 3),4 不行,2 放得下(剩 1),1 放得下。所以 75 = 01001011。

方法二,除以 2:不断除以 2,记下每次的余数,再从下往上读余数。

用连续除法转换 75
数÷ 2余数
75371
37181
1890
941
420
210
101
步骤 1 / 7
从下往上读余数得到 1001011,补足 8 位:01001011。

十六进制

十六进制以 16 为基数。它使用数字 0–9,然后用字母 A–F 表示 10–15。一个十六进制数字正好对应 4 位(半字节),所以一个字节总是两个十六进制数字。

二进制转十六进制时,从右往左每 4 位分一组,再把每组分别转换。反过来,就把每个十六进制数字还原成它的 4 位。

二进制转十六进制,一次一个半字节可交互
128
64
32
16
8
4
2
1
B
7
十进制 183十六进制 B7
128 + 32 + 16 + 4 + 2 + 1 = 183
1011 0111 → B(11)和 7 → B7。换成十进制是 11 × 16 + 7 = 183。

十六进制与十进制互转

十六进制的位值是 16 的幂:1、16、256、4096。所以 1F4 = 1 × 256 + 15 × 16 + 4 × 1 = 500。

要把十进制转成十六进制,考试里最快的路线通常是十进制 → 二进制 → 十六进制。以 500 为例:0001 1111 0100 → 1F4。

十进制二进制十六进制
910019
101010A
121100C
151111F
160001 000010
2551111 1111FF

十六进制用在哪里

十六进制比二进制短,人更容易读写,也更少出错。你会在这些地方见到它:

  • HTML 颜色代码,例如 #FF8800(红 FF、绿 88、蓝 00)。
  • MAC 地址,例如 00-1A-2B-3C-4D-5E。
  • 错误代码和内存转储,例如 0x0000007B。
  • IPv6 地址,例如 2001:0db8::ff00:0042。
  • URL,其中 %20 是空格的十六进制代码。

注意: 十六进制只是人类书写二进制的一种方式,计算机底层存储的仍然是二进制。

关键术语

位(bit)
一个二进制数字,0 或 1。
半字节(nibble)
4 位,对应一个十六进制数字。
字节(byte)
8 位,对应两个十六进制数字。
十进制
以 10 为基数,人们日常使用的数制。
十六进制
以 16 为基数,使用 0–9 和 A–F。

自我检测

把 10010110 转换成十进制。查看答案

128 + 16 + 4 + 2 = 150。

把 200 转换成 8 位二进制。查看答案

200 = 128 + 64 + 8 → 11001000。

把 3C 转换成二进制和十进制。查看答案

3 → 0011,C → 1100,所以是 00111100。十进制:3 × 16 + 12 = 60。

说出程序员用十六进制代替二进制的两个理由。查看答案

它更短,更容易阅读和记忆,输入时也更少出错;而且它能直接转换成二进制。