欢迎来到二进制的世界!

你好,未来的计算机科学家!准备好攻克这个定义了计算机如何思考的章节了吗?这就是“二进制”章节,它处于我们学习数据的核心地位。

为什么要学这个?因为计算机处理的所有内容——你的照片、游戏、文档——最终都是以海量的简单电信号序列存储和被理解的:即“开”或“关”。我们仅用两个数字来表示这些信号:01。这种双数字语言被称为二进制(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系统,因为它只使用两个数字:01

  • 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)

  • 一个位只能存储一个值:01
  • 它本身通常不足以代表任何有意义的信息。
半字节 (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)。

你已经完成了最艰难的部分,继续练习这些转换,你会发现二进制变得像第二天性一样简单!