欢迎来到进制的世界!
你好,未来的计算机科学家们!本章进制转换是理解计算机如何存储和处理信息的基础。如果这些数字起初看起来很奇怪,别担心——这就像学习一门新语言。一旦你掌握了其中的规律,你很快就能熟练地进行转换!
在本章中,我们将学习如何在计算机领域最常用的三种进制之间进行转换:十进制 (Denary, Base 10)、二进制 (Binary, Base 2) 和 十六进制 (Hexadecimal, Base 16)。
为什么我们需要不同的进制?
我们使用十进制是因为我们有10个手指(一个方便的巧合!)。然而,计算机只能理解电流——要么是开 (ON),要么是关 (OFF)。这种开/关状态由1和0来表示,这就是为什么计算机使用二进制。十六进制只是程序员为了方便快速阅读长串二进制代码而使用的一种简便记法!
三种核心进制
1. 十进制 (Denary/Base 10)
这是我们日常生活中使用的标准数字系统。它使用10个数字(0到9)。
- 基数 (Base): 10
- 所用数字: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
- 位权 (Place Values,10的幂): \(10^3\)(千位)、\(10^2\)(百位)、\(10^1\)(十位)、\(10^0\)(个位)
2. 二进制 (Binary/Base 2)
这是计算机的母语。它只使用两个数字,0和1。
- 基数 (Base): 2
- 所用数字: 0, 1
- 关键术语: 单个二进制数字称为位 (bit)。八个位组成一个字节 (byte)。
- 位权 (Place Values,2的幂): \(2^7, 2^6, 2^5, 2^4, 2^3, 2^2, 2^1, 2^0\)(即 128, 64, 32, 16, 8, 4, 2, 1)
3. 十六进制 (Hexadecimal/Base 16)
十六进制被用作表示长二进制数的一种紧凑方式(例如颜色代码或内存地址)。因为我们需要16个不同的符号,所以我们使用0-9,然后用字母A-F来表示。
- 基数 (Base): 16
- 所用数字: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
十六进制对照表
这张表至关重要!请务必记住A到F对应的十进制值。
A = 10
B = 11
C = 12
D = 13
E = 14
F = 15
转换 1:十进制转二进制 (Base 10 to Base 2)
我们使用重复除以2的方法。这是将十进制转换为二进制最可靠的方法。
步骤演示:将十进制 149 转换为二进制
目标: 将 \(149_{10}\) 转换为二进制。
- 将十进制数除以2。
- 记录余数(只能是0或1)。
- 取整后的商继续除以2。
- 持续进行,直到商为0。
- 将余数由下往上读取。
\(149 \div 2 = 74\) 余数 1
\(74 \div 2 = 37\) 余数 0
\(37 \div 2 = 18\) 余数 1
\(18 \div 2 = 9\) 余数 0
\(9 \div 2 = 4\) 余数 1
\(4 \div 2 = 2\) 余数 0
\(2 \div 2 = 1\) 余数 0
\(1 \div 2 = 0\) 余数 1
将余数由下往上读取:10010101
十进制转二进制的要点
一定要使用重复除以2的方法,并记住黄金法则:从下往上读取余数,才能得到正确的二进制结果。
转换 2:二进制转十进制 (Base 2 to Base 10)
这种转换通常更容易!我们使用位权系统,即基于2的幂次方。
步骤演示:将二进制 10110011 转换为十进制
目标: 将 \(10110011_2\) 转换为十进制。
- 写出二进制位权(从128到1)。(因为有8位,我们使用8个位置)。
- 将二进制数字写在对应位权的下方。
- 将所有下方对应数字为“1”的位权相加。
二进制位: 1 0 1 1 0 0 1 1
计算:
\(128 \times 1 = 128\)
\(64 \times 0 = 0\)
\(32 \times 1 = 32\)
\(16 \times 1 = 16\)
\(8 \times 0 = 0\)
\(4 \times 0 = 0\)
\(2 \times 1 = 2\)
\(1 \times 1 = 1\)
总和: \(128 + 32 + 16 + 2 + 1 = 179\)
该十进制数为 \(179_{10}\)。
位权记忆小贴士
如果起初觉得有点难,别担心! 请记住8位二进制的位权:128, 64, 32, 16, 8, 4, 2, 1。当你向左移动时,它们只是在不断翻倍!
转换 3 & 4:二进制与十六进制
在二进制和十六进制之间转换是最简单的,因为十六进制本质上就是二进制的简写。每一个十六进制数字都可以精确代表四个二进制位。这四个位被称为一个半字节 (nybble)。
A. 二进制转十六进制 (Base 2 to Base 16)
步骤演示:将二进制 11010110 转换为十六进制
目标: 将 \(11010110_2\) 转换为十六进制。
- 从右向左,将二进制数每四个位分为一组(半字节)。
\(1101 \quad 0110\)
- 利用8, 4, 2, 1的位权将每组四位二进制转换为对应的十进制。
第一组 (1101): \(8+4+0+1 = 13\)
第二组 (0110): \(0+4+2+0 = 6\) - 将得到的十进制值转换为十六进制数字(如有必要,使用A-F)。
\(13\) 在十六进制中为 D
\(6\) 在十六进制中为 6
结果为 D6。
B. 十六进制转二进制 (Base 16 to Base 2)
步骤演示:将十六进制 3F 转换为二进制
目标: 将 \(3F_{16}\) 转换为二进制。
- 将每个十六进制数字分开处理。 (3 和 F)
- 将每个十六进制数字转换为十进制。 (3 和 15)
- 将每个十进制值转换为4位二进制组(半字节)。
数字 3: 十进制为3。使用8, 4, 2, 1位权,我们需要 2 + 1。
\(\rightarrow 0011\)
数字 F: 十进制为15。使用8, 4, 2, 1位权,我们需要 8 + 4 + 2 + 1。
\(\rightarrow 1111\)
组合: \(00111111\)
二进制数为 \(00111111_2\)。(前导零对于保持4位结构非常重要!)
冷知识
网页中的颜色代码通常用十六进制书写!例如,纯红色可能是 #FF0000。FF代表红色分量的255(最大亮度)。这比写出24位二进制要短得多!
转换 5:十进制与十六进制
虽然可以直接转换(使用重复除以16),但对于GCSE学生来说,通过二进制进行中转通常更安全、更简单。这也能让你巩固刚刚学到的技能!
A. 十进制转十六进制(通过二进制)
步骤 1: 将十进制转换为二进制(使用重复除以2的方法)。
步骤 2: 将得到的二进制转换为十六进制(将位分组为4位一组的半字节)。
- 十进制转二进制: \(150_{10} = 10010110_2\)
- 二进制转十六进制(每4位拆分): \(1001 \quad 0110\)
- \(1001 = 9\)。 \(0110 = 6\)。
- 结果: \(96_{16}\)
B. 十六进制转十进制(通过二进制)
步骤 1: 将十六进制转换为二进制(将每个数字转换为4位半字节)。
步骤 2: 将得到的二进制转换为十进制(使用128, 64, 32等位权)。
- 十六进制转二进制:
A = 1010
5 = 0101
组合: \(10100101_2\) - 二进制转十进制:
\(128+0+32+0+0+4+0+1 = 165\)
- 结果: \(165_{10}\)
快速回顾与常见错误
快速回顾:转换流程
关键在于理解各进制之间的关系:
二进制 \(\leftrightarrow\) 十六进制 (使用4位半字节法)
需要避免的常见陷阱
- 十进制转二进制: 忘记将余数由下往上读取。
- 十六进制转二进制: 把一个十六进制数字(如 F=15)写成8位。请记住,一个十六进制数字永远等于4位 (1111)。
- 二进制转十进制: 漏掉某个位权或者搞混数值(例如混淆了32和16)。在开始计算前,务必清晰地写出 128, 64, 32, 16, 8, 4, 2, 1 这一行。
你已经成功掌握了数据表示的核心!熟能生巧——试着把你自己的年龄、门牌号或最喜欢的数字在这三种进制之间转换一下吧。你一定没问题的!