欢迎来到二进制的世界!
你好,未来的计算机科学家!准备好攻克这个定义了计算机如何思考的章节了吗?这就是“二进制”章节,它处于我们学习数据的核心地位。
为什么要学这个?因为计算机处理的所有内容——你的照片、游戏、文档——最终都是以海量的简单电信号序列存储和被理解的:即“开”或“关”。我们仅用两个数字来表示这些信号:0 和 1。这种双数字语言被称为二进制(Binary)。
如果起初觉得转换有些棘手,别担心。我们将通过简单的步骤和有趣的记忆技巧带你拆解它。让我们开始吧!
1. 理解数制:十进制 vs. 二进制
我们熟悉的系统:十进制(基数为10)
我们每天都在使用十进制(Denary)。它也称为基数10,因为我们使用了十个不同的数字(0、1、2、3、4、5、6、7、8、9)。
一个数字的值取决于它的位值(place value),这是基于10的幂运算。
示例:数字 457
- 7 位于个位 (\(10^0 = 1\))
- 5 位于十位 (\(10^1 = 10\))
- 4 位于百位 (\(10^2 = 100\))
计算机的语言:二进制(基数为2)
二进制系统是计算机科学的支柱。它是基数2系统,因为它只使用两个数字:0 和 1。
- 0 通常代表电信号为关(Off)或假(False)。
- 1 通常代表电信号为开(On)或真(True)。
类比:将二进制想象成一排简单的电灯开关。每个开关只能是开(1)或关(0)。如果你有8个开关,你就拥有了8个存储信息的位置!
二进制中的位值基于2的幂。我们通常使用8个开关,这意味着我们处理的是8位二进制数。
核心要点: 十进制使用10的幂。二进制使用2的幂(仅包含0和1)。
2. 二进制与十进制之间的转换
二进制位值表(神奇的数字)
这个表格是你最重要的工具。你必须背下这些数字!它们是2的幂,从右侧的 \(2^0\) 开始,向左移动时数值翻倍。
8位二进制位值
\(\begin{array}{|c|c|c|c|c|c|c|c|}\n \hline\n 2^7 & 2^6 & 2^5 & 2^4 & 2^3 & 2^2 & 2^1 & 2^0 \\\n \hline\n \mathbf{128} & \mathbf{64} & \mathbf{32} & \mathbf{16} & \mathbf{8} & \mathbf{4} & \mathbf{2} & \mathbf{1} \\\n \hline\n \end{array}\)
逐步学习 2.1:二进制转十进制(基数2转基数10)
这种转换比较简单。你只需将所有 1 对应的位值相加即可。
示例:将二进制数 10110010 转换为十进制。
第 1 步:画出表格,并将二进制数写在下面。
\(\begin{array}{|c|c|c|c|c|c|c|c|}\n \hline\n 128 & 64 & 32 & 16 & 8 & 4 & 2 & 1 \\\n \hline\n \mathbf{1} & \mathbf{0} & \mathbf{1} & \mathbf{1} & \mathbf{0} & \mathbf{0} & \mathbf{1} & \mathbf{0} \\\n \hline\n \end{array}\)
第 2 步:圈出数字为 1 的位值。
对应 1 的位置是:128、32、16 和 2。
第 3 步:将圈出的值相加。
\(128 + 32 + 16 + 2 = 178\)
答案:二进制数 10110010 对应的十进制数为 178。
记忆助手: 如果看到 0,直接忽略它上方的数字!只有 1 才计入总和!
逐步学习 2.2:十进制转二进制(基数10转基数2)
对于这种转换,我们使用减法技巧。我们尝试从最大的位值开始,看它能否放入该十进制数中。
示例:将十进制数 155 转换为二进制。
第 1 步:画出空的8位表格。
\(\begin{array}{|c|c|c|c|c|c|c|c|}\n \hline\n 128 & 64 & 32 & 16 & 8 & 4 & 2 & 1 \\\n \hline\n & & & & & & & \\\n \hline\n \end{array}\)
第 2 步:从左侧(128)开始询问:128 能放入 155 吗?
- 能。在 128 位列下写一个 1。
- 做减法:\(155 - 128 = 27\)。 (27 是你的新目标数)。
第 3 步:移至下一列(64)。64 能放入剩下的 27 中吗?
- 不能。在 64 位列下写一个 0。
- 剩下的目标数仍然是 27。
第 4 步:继续对比剩余的列(32、16、8、4、2、1)与目标数。
- 32 能放入 27 吗?不能 (0)。目标仍为 27。
- 16 能放入 27 吗?能 (1)。做减法:\(27 - 16 = 11\)。新目标是 11。
- 8 能放入 11 吗?能 (1)。做减法:\(11 - 8 = 3\)。新目标是 3。
- 4 能放入 3 吗?不能 (0)。目标仍为 3。
- 2 能放入 3 吗?能 (1)。做减法:\(3 - 2 = 1\)。新目标是 1。
- 1 能放入 1 吗?能 (1)。做减法:\(1 - 1 = 0\)。最终目标为 0。
第 5 步:写出最终的二进制结果(从左到右读取底行)。
\(\begin{array}{|c|c|c|c|c|c|c|c|}\n \hline\n 128 & 64 & 32 & 16 & 8 & 4 & 2 & 1 \\\n \hline\n \mathbf{1} & \mathbf{0} & \mathbf{0} & \mathbf{1} & \mathbf{1} & \mathbf{0} & \mathbf{1} & \mathbf{1} \\\n \hline\n \end{array}\)
答案:十进制数 155 对应的二进制数为 10011011。
要避免的常见错误: 请务必记住写上 0(作为占位符)!如果你漏掉了一个占位符(比如上面 64 和 32 位列中的 0),你的结果将完全错误。8位二进制数必须始终有8个数字!
核心要点: 二进制转换完全依赖于位值表(128, 64, 32, 16, 8, 4, 2, 1)。熟能生巧!
3. 衡量数字数据
由于计算机处理海量的 0 和 1,我们需要标准的单位来衡量数字存储容量,就像用升衡量液体或用千克衡量重量一样。
3.1. 最小单位
位 (Bit, b)
位(Bit)是数据的最小单位。它代表二进制数字(Binary Digit)。
- 一个位只能存储一个值:0 或 1。
- 它本身通常不足以代表任何有意义的信息。
半字节 (Nibble)
半字节(Nibble)是一组 4 个位。
- \(1 \text{ Nibble} = 4 \text{ bits}\)。
字节 (Byte, B)
字节(Byte)是存储的基本单位,对于表示字符(如字母“A”或数字“7”)至关重要。
- 一个字节等于 8 位。
- 单个文本字符通常占用 1 个字节的内存(例如在 ASCII 编码中)。
你知道吗? 使用 8 位(1 字节),我们可以表示 \(2^8 = 256\) 个唯一的数字或字符(从 0 到 255)。
3.2. 更大的单位与 1024 的幂
在十进制世界中,“千(Kilo)”意味着 1,000(例如 1 公里 = 1,000 米)。然而,因为计算机使用基数为 2 的系统,它们的测量基于 2 的幂。最接近 1,000 的 2 的幂是 1,024 (\(2^{10}\))。
因此,所有后续单位都以 1,024 而非 1,000 为倍数增长。
数据测量单位
| 单位 | 缩写 | 关系(近似) | 关系(精确) |
| 位 (Bit) | b | 无 | 二进制数字 (0 或 1) |
| 字节 (Byte) | B | 无 | 8 位 |
| 千字节 (Kilobyte) | KB | 约 1 千字节 | \(1,024\) 字节 |
| 兆字节 (Megabyte) | MB | 约 1 百万字节 | \(1,024\) KB |
| 吉字节 (Gigabyte) | GB | 约 1 十亿字节 | \(1,024\) MB |
| 太字节 (Terabyte) | TB | 约 1 万亿字节 | \(1,024\) GB |
使用示例:一首典型的 MP3 歌曲可能是 4 兆字节 (4 MB)。一块大硬盘可能拥有 1 太字节 (1 TB) 的存储空间。
至关重要的区别: 在描述速度(例如每秒兆位,Mb/s)和存储(例如兆字节,MB)时,请确保你能区分小写“b”(位)和大写“B”(字节)。
核心要点: 8 位组成 1 字节。所有更大的单位(KB, MB, GB, TB)都是通过将前一个单位乘以 1,024 得到的。
最后回顾:二进制基础
恭喜你!你已经掌握了计算机如何存储和解释数值数据的基础知识。这些基础知识对于理解稍后更复杂的数据表示至关重要。
速查表
- 十进制(Denary) 是基数为 10(数字 0-9)。
- 二进制(Binary) 是基数为 2(数字 0 和 1)。
- 转换的关键在于 8位位值表:128, 64, 32, 16, 8, 4, 2, 1。
- 位(Bit, b) 是最小单位。
- 字节(Byte, B) 是 8 个位。
- 存储单位基于 1,024(而不是 1,000)。
你已经完成了最艰难的部分,继续练习这些转换,你会发现二进制变得像第二天性一样简单!