欢迎来到数字转换的世界!
在计算机科学中,我们经常需要使用计算机的“母语”与其沟通。虽然我们平时习惯使用十进制(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 开始,向左移动时数值加倍。
步骤流程:
- 画出你的表格:128 | 64 | 32 | 16 | 8 | 4 | 2 | 1
- 在表格下方写入二进制数字。
- 将所有下方对应为 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 等)可以放入你的十进制数字中。
步骤流程:
- 从 8 位元表格开始:128, 64, 32, 16, 8, 4, 2, 1。
- 从左边 (128) 开始问自己:“我的数字是否大于或等于这个位值?”
- 如果是:写下 1,并从你的总数中减去该数值。
- 如果否:写下 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)。
将二进制转换为十六进制:
- 将你的 8 位元二进制数字分成两个 4 位元的部分(半字节)。
- 将每个 4 位元部分转换为十进制(数值 0-15)。
- 将任何 10-15 的数字转换成正确的十六进制字母(A-F)。
范例:将 11010011 转换为十六进制
左半字节:1101 → \( 8+4+1 = 13 \)。在十六进制中,13 是 D。
右半字节:0011 → \( 2+1 = 3 \)。在十六进制中,3 是 3。
结果:D3
将十六进制转换为二进制:
- 将每个十六进制数字分开处理。
- 将其转换为 4 位元的二进制数字。
- 把它们接在一起。
范例:将 2F 转换为二进制
2 → 0010
F (15) → 1111
结果:00101111
你知道吗? 程序员使用十六进制是因为它比二进制短得多。写“FF”比写“11111111”容易阅读多了!
5. 将十六进制转换为十进制
对于 AQA 8525 课程大纲,你只需要处理到 FF (255)。这意味着你永远只需要处理两个十六进制数字。
步骤流程:
- 右边的数字是“个位”(乘以 1)。
- 左边的数字是“十六位”(乘以 16)。
- 将它们相乘并相加。
范例:将 3B 转换为十进制
- 左边数字:3。计算:\( 3 \times 16 = 48 \)
- 右边数字:B (11)。计算:\( 11 \times 1 = 11 \)
- 相加:\( 48 + 11 = 59 \)
结果:59
6. 将十进制转换为十六进制
有两种方法。你可以走“十进制 → 二进制 → 十六进制”(使用半字节技巧),或者使用除法。
除法法:
- 将你的十进制数字除以 16。
- 商数就是你的左侧十六进制数字。
- 余数就是你的右侧十六进制数字。
范例:将 162 转换为十六进制
- \( 162 \div 16 = 10 \)。(10 在十六进制中是 A)。
- 余数是 2。(2 在十六进制中是 2)。
结果:A2
速查小框:
- 二进制位值:128, 64, 32, 16, 8, 4, 2, 1
- 十六进制位值:16, 1
- 8 位元/2 位数十六进制的最大值:255 (FF)
总结:我该用哪种方法?
- 二进制 ↔ 十进制: 使用 128...1 的表格。
- 二进制 ↔ 十六进制: 分成 4 位元的半字节。这是最快的方法!
- 十六进制 ↔ 十进制: 使用“乘以/除以 16”的方法,如果你觉得方便,也可以先转换为二进制。
小秘诀: 一定要反复检查你的加法!大多数失分都是因为简单的计算错误,而不是因为不懂运算流程。