欢迎来到数字转换的世界!

在计算机科学中,我们经常需要使用计算机的“母语”与其沟通。虽然我们平时习惯使用十进制(Decimal,以 10 为基数),但计算机只读得懂二进制(Binary,以 2 为基数),而程序员则常使用十六进制(Hexadecimal,以 16 为基数)作为简写。在本章中,你将学会如何成为一名“数字翻译官”,在三个系统之间轻松切换。

别担心,刚开始看起来可能觉得“数学味”很重! 一旦你掌握了简单的规律和技巧,这就会像照着食谱做菜一样简单。我们将聚焦于 0 到 255 之间的数字,这正好是一个字节(byte,即 8 位元)所能表示的范围。


1. 前提知识:了解你的进位制

在进行转换之前,我们先快速重温一下这三个进位系统:

  • 十进制(Decimal,基数 10): 使用 0-9 的数字。这就是你每天都在使用的系统。
  • 二进制(Binary,基数 2): 只使用 0 和 1。
  • 十六进制(Hexadecimal,基数 16): 使用 0-9,随后用字母 A 到 F 来表示 10 到 15。

十六进制速查表:

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


2. 将二进制转换为十进制

最简单的方法是使用位值表(place value table)。由于我们处理的是 8 位元二进制,我们画一个有 8 栏的表格,从右边的 1 开始,向左移动时数值加倍。

步骤流程:

  1. 画出你的表格:128 | 64 | 32 | 16 | 8 | 4 | 2 | 1
  2. 在表格下方写入二进制数字。
  3. 将所有下方对应为 1 的数值相加。

范例:将 10101000 转换为十进制

128(1) + 64(0) + 32(1) + 16(0) + 8(1) + 4(0) + 2(0) + 1(0)
计算:\( 128 + 32 + 8 = 168 \)
结果:168

重点提示: 只要将对应位值为 1 的位置“开启”,然后忽略 0 就行了!


3. 将十进制转换为二进制

把它想象成一个“贪心”游戏。你需要看看哪些二进制位值(128, 64 等)可以放入你的十进制数字中。

步骤流程:

  1. 从 8 位元表格开始:128, 64, 32, 16, 8, 4, 2, 1
  2. 从左边 (128) 开始问自己:“我的数字是否大于或等于这个位值?”
  3. 如果:写下 1,并从你的总数中减去该数值。
  4. 如果:写下 0 并移动到下一栏。

范例:将 75 转换为二进制

  • 128 能放入 75 吗?不能。(0)
  • 64 能放入 75 吗?能。(1)。剩余:\( 75 - 64 = 11 \)
  • 32 能放入 11 吗?不能。(0)
  • 16 能放入 11 吗?不能。(0)
  • 8 能放入 11 吗?能。(1)。剩余:\( 11 - 8 = 3 \)
  • 4 能放入 3 吗?不能。(0)
  • 2 能放入 3 吗?能。(1)。剩余:\( 3 - 2 = 1 \)
  • 1 能放入 1 吗?能。(1)。剩余:0

结果:01001011

常见错误: 忘了写 0!8 位元二进制数字必须有 8 位数,即使最前面的是 0 也要写出来。


4. 二进制与十六进制:“半字节(Nibble)”技巧

十六进制看起来很可怕,但有一个秘密捷径!一个十六进制数字刚好代表 4 个位元(即一个半字节,nibble)。

将二进制转换为十六进制:

  1. 将你的 8 位元二进制数字分成两个 4 位元的部分(半字节)。
  2. 将每个 4 位元部分转换为十进制(数值 0-15)。
  3. 将任何 10-15 的数字转换成正确的十六进制字母(A-F)。

范例:将 11010011 转换为十六进制

左半字节:1101 → \( 8+4+1 = 13 \)。在十六进制中,13 是 D
右半字节:0011 → \( 2+1 = 3 \)。在十六进制中,3 是 3
结果:D3

将十六进制转换为二进制:

  1. 将每个十六进制数字分开处理。
  2. 将其转换为 4 位元的二进制数字。
  3. 把它们接在一起。

范例:将 2F 转换为二进制

2 → 0010
F (15) → 1111
结果:00101111

你知道吗? 程序员使用十六进制是因为它比二进制短得多。写“FF”比写“11111111”容易阅读多了!


5. 将十六进制转换为十进制

对于 AQA 8525 课程大纲,你只需要处理到 FF (255)。这意味着你永远只需要处理两个十六进制数字。

步骤流程:

  1. 右边的数字是“个位”(乘以 1)。
  2. 左边的数字是“十六位”(乘以 16)。
  3. 将它们相乘并相加。

范例:将 3B 转换为十进制

  1. 左边数字:3。计算:\( 3 \times 16 = 48 \)
  2. 右边数字:B (11)。计算:\( 11 \times 1 = 11 \)
  3. 相加:\( 48 + 11 = 59 \)

结果:59


6. 将十进制转换为十六进制

有两种方法。你可以走“十进制 → 二进制 → 十六进制”(使用半字节技巧),或者使用除法。

除法法:

  1. 将你的十进制数字除以 16。
  2. 商数就是你的左侧十六进制数字。
  3. 余数就是你的右侧十六进制数字。

范例:将 162 转换为十六进制

  1. \( 162 \div 16 = 10 \)。(10 在十六进制中是 A)。
  2. 余数是 2。(2 在十六进制中是 2)。

结果:A2

速查小框:
- 二进制位值:128, 64, 32, 16, 8, 4, 2, 1
- 十六进制位值:16, 1
- 8 位元/2 位数十六进制的最大值:255 (FF)


总结:我该用哪种方法?

- 二进制 ↔ 十进制: 使用 128...1 的表格。
- 二进制 ↔ 十六进制: 分成 4 位元的半字节。这是最快的方法!
- 十六进制 ↔ 十进制: 使用“乘以/除以 16”的方法,如果你觉得方便,也可以先转换为二进制。

小秘诀: 一定要反复检查你的加法!大多数失分都是因为简单的计算错误,而不是因为不懂运算流程。