什么是二进制?计算机语言的完整指南

2025/10/24

如果你剥开智能手机的时尚界面,看穿屏幕的鲜艳色彩,忽略桌面上的用户友好图标,你会发现一个广阔、寂静的海洋,只有两个数字:0 和 1

这就是二进制。它是信息时代的 DNA。无论你是在串流 4K 电影、发送简单的短信,还是训练复杂的人工智能模型,每一个动作最终都会被分解成这两个简单的数字。

什么是二进制,真的?为什么计算机使用它而不是我们日常生活中使用的十进制系统?一个简单的「开」和「关」开关如何产生我们今天拥有的复杂数字体验?

在这份完整指南中,我们将探索二进制数字系统的深度。我们将从二进制的数学起源,到您 CPU 中的实体晶体管,最后到可能完全重写规则的量子未来。


1. 基本定义:什么是二进制?

从核心来看,二进制(也称为基数-2)是一种只使用两个不同符号的数字系统:0(零)和1(一)。

要理解二进制,你首先需要理解你每天使用的系统:十进制(基数-10)。

十进制 vs. 二进制:比较

十进制系统中,我们有十个独特的数字:0、1、2、3、4、5、6、7、8 和 9。当我们向上计数并达到 9 时,我们就用完了独特的符号。要继续,我们在左侧添加一个新的「位置」或栏位(十位),并将右栏重置为 0,得到 10。

二进制系统中,我们只有两个独特的数字:0 和 1。当我们计数时,它看起来像这样:

  1. 0
  2. 1(我们现在已经用完了符号)
  3. 10(这等于十进制中的「2」)
  4. 11(这等于十进制中的「3」)
  5. 100(这等于十进制中的「4」)

虽然这乍看之下可能令人困惑,但它遵循与你在幼儿园学到的数字系统完全相同的数学逻辑——它只是使用不同的「基数」。

「位」和「字节」

你不能在没有定义两个最常见的数字测量单位的情况下讨论二进制:

  • 位(Bit): 进制数的缩写,位是计算机中最小的数据单位。它是一个单一的二进制值,要么是 0,要么是 1。
  • 字节(Byte): 字节是一组8 个位串在一起。单个字节可以表示 282^8(或 256)个不同的值,范围从 00000000(0)到 11111111(255)。

类比:想象成一个单一的电灯开关。它要么开,要么关。将字节想象成 8 个电灯开关的一排。通过翻转这 8 个开关的不同组合,你可以创建 256 种独特的模式。


2. 为什么计算机使用二进制?

这是初学者最常问的问题。人类发现基数-10 直观,因为我们有十根手指。然而,计算机没有手指——它们有电力。

计算机使用二进制是出于物理可靠性逻辑的原因,而不是因为数学。

硬件的物理限制

在微观层面上,计算机由数十亿个晶体管组成。晶体管本质上是一个微小的电子开关,让电流通过或阻止它。

测量电力的两种不同状态非常容易:

  1. 高电压(开/真): 表示为1
  2. 低电压/无电压(关/假): 表示为0

如果我们试图在计算机中使用十进制系统,晶体管需要识别 10 种不同的电压水平(例如,1V 代表「1」,2V 代表「2」,3V 代表「3」等)。

噪声和干扰的问题

电子信号容易受到干扰、热量和「噪声」的影响。如果计算机试图区分 3.5 伏特和 3.6 伏特来区分「3」和「4」,电源或热量的微小波动可能导致计算错误。

通过使用二进制,误差范围是巨大的。计算机只需要知道:「有信号,还是没有?」这使得数字设备非常强健和可靠

逻辑门和布尔代数

二进制完美地映射到布尔逻辑,这是由乔治·布尔在 19 世纪引入的代数分支。在布尔逻辑中,所有值都简化为

  • 1 = 真
  • 0 = 假

计算机处理器是使用「逻辑门」(AND、OR、NOT、XOR)构建的,这些逻辑门接受这些二进制输入并产生二进制输出。我们将在本文后面详细讨论这一点。


3. 如何读取二进制代码(魔法背后的数学)

要揭开二进制的神秘面纱,我们必须看看位置记数法的数学。

在我们标准的十进制基数-10)系统中,数字的位置根据 10 的幂次确定其值:

  • 100=110^0 = 1(个位)
  • 101=1010^1 = 10(十位)
  • 102=10010^2 = 100(百位)

因此,数字145计算为: (1×100)+(4×10)+(5×1)=145(1 \times 100) + (4 \times 10) + (5 \times 1) = 145

二的幂次

二进制基数-2)中,位置根据 2 的幂次确定值。从右到左读取,值按以下方式增加:

  • 202^0 = 1
  • 212^1 = 2
  • 222^2 = 4
  • 232^3 = 8
  • 242^4 = 16
  • 252^5 = 32
  • 262^6 = 64
  • 272^7 = 128

计算示例

让我们将二进制字节01011001转换为十进制数字。

2 的幂次272^7262^6252^5242^4232^3222^2212^1202^0
十进制值1286432168421
二进制数字01011001

现在,我们只需将有1的地方的十进制值相加:

64+16+8+1=8964 + 16 + 8 + 1 = 89

所以,01011001 在二进制中等于十进制中的89


4. 编码:二进制如何表示数据

如果二进制只是数字,我们如何使用它来发送电子邮件、查看照片或在 Spotify 上听音乐?答案在于编码方案

工程师已经商定了将二进制数字映射到人类可读信息的标准。

文字:ASCII 和 Unicode

在计算的早期,开发了ASCII(美国信息交换标准代码)系统。这个标准为字母表中的每个字母、标点符号和控制字符分配了一个唯一的数字。

例如:

  • 大写字母A被分配十进制数字65
  • 65 的二进制是01000001

当你在键盘上输入 'A' 时,你的计算机会向处理器发送二进制信号 01000001。处理器在标准表中查找该值,并理解你的意思是 'A'。

ASCII 的限制: 它只使用 7 或 8 位,这意味着它只能表示 128 到 256 个字符。这对英语来说没问题,但对中文、日语或阿拉伯语来说是不可能的。

解决方案:Unicode。 今天,我们使用Unicode(通常通过 UTF-8 编码)。Unicode 每个字符使用最多 32 位,允许它表示超过 110 万个不同的字符——包括地球上的每种语言,以及关键的表情符号🚀。

图像:像素和 RGB

屏幕上的图像由数百万个称为像素的微小点组成。在计算机中,图像本质上是这些像素的网格(矩阵)。

在标准彩色图像中,每个像素由三种颜色定义:红、绿和蓝(RGB)。 每个颜色通道通常获得**8 位(1 字节)**的数据。

  • 红色: 0 到 255
  • 绿色: 0 到 255
  • 蓝色: 0 到 255

因此,单个像素由 24 位的二进制代码表示。

  • 纯红色将是:11111111 00000000 00000000(R=255,G=0,B=0)。
  • 白色将是:11111111 11111111 11111111(R=255,G=255,B=255)。

4K 显示器有超过 800 万个像素。要显示一帧,计算机必须立即处理所有 800 万个像素的二进制数据。

声音:采样模拟波

现实世界中的声音是模拟波——它是连续的。要在二进制(数字音频)中捕获它,我们必须每秒「采样」波数千次。

  1. 采样率: 我们测量波的频率(例如,44.1 kHz 意味着每秒 44,100 次)。
  2. 位深度: 测量的精确度(例如,16 位或 24 位)。

每个样本都被记录为一个二进制数字,表示该确切微秒处声波的振幅。当你播放文件时,计算机会将这些二进制数字转换回电脉冲,移动你的耳机扬声器。


5. 二进制的简史

虽然我们将二进制与现代硅芯片联系在一起,但这个概念已有数千年的历史。

古代起源

  • 《易经》(公元前 9 世纪): 这本古代中国的占卜文本使用断线和实线(阴和阳)的系统来创建六角形。这在技术上是已知最早的二进制系统。
  • Pingala(公元前 2 世纪): 一位名为 Pingala 的印度学者使用短音节和长音节来分析诗歌,在零的发明之前很久就数学地描述了二进制模式。

数学家

  • 戈特弗里德·威廉·莱布尼茨(1679 年): 这位著名的德国博学者被认为是现代二进制之父。他对《易经》着迷,并在他的文章《二进制算术解释》中正式记录了二进制算术系统(基数-2)。他在其中看到了精神意义:1 代表上帝,0 代表虚无。
  • 乔治·布尔(1847 年): 布尔创建了布尔代数,这是一个完全基于真/假变量的逻辑系统。当时,这是一个抽象的数学练习。一个世纪后,它成为所有计算机电路设计的逻辑基础。

电子时代

  • 克劳德·香农(1937 年): 在他在 MIT 的硕士论文中(可以说是 20 世纪最重要的硕士论文),香农证明了电子开关可以实现布尔代数。他弥合了抽象数学和实体机器之间的差距,为数字计算机铺平了道路。

6. 逻辑门:计算机的大脑

我们知道计算机使用二进制,但它们如何思考?它们如何做出决定?

它们使用逻辑门。这些是晶体管的物理排列,接受二进制输入并根据规则产生特定的二进制输出。

以下是最基本的三个门:

1. AND 门

AND 门只有在两个输入都是 1 时才输出1

  • 输入 A:1,输入 B:1 → 输出:1
  • 输入 A:1,输入 B:0 → 输出:0
  • 现实世界的类比: 只有当你在银行有钱并且你知道你的 PIN 码时,你才能提取现金。

2. OR 门

OR 门如果至少一个输入是 1,则输出1

  • 输入 A:1,输入 B:0 → 输出:1
  • 输入 A:0,输入 B:0 → 输出:0
  • 现实世界的类比: 如果你有票或者你在 VIP 名单上,你可以进入俱乐部。

3. NOT 门(反相器)

NOT 门只是翻转输入。

  • 输入:1 → 输出:0
  • 输入:0 → 输出:1

通过组合数百万个这些简单的门,工程师创建了可以加数字、存储内存和处理复杂指令的电路。现代 CPU(中央处理器)包含数十亿个这些微观门。


7. 十六进制:程序员的简写

如果你查看计算机代码或网页设计中的颜色代码,你很少看到像 10101100 这样的长二进制字符串。相反,你会看到像 #FF5733 这样的代码。

这是十六进制(基数-16)。

二进制对机器来说很棒,但对人类来说很糟糕。它太长且难以阅读。

  • 二进制: 1111 1111
  • 十进制: 255
  • 十六进制: FF

十六进制使用数字 0-9 和字母 A-F 来表示值。 关键是,一个十六进制数字正好代表 4 位的二进制。

这使得它成为开发人员的完美简写。

  • 1010(二进制)= A(十六进制)
  • 1111(二进制)= F(十六进制)

对于程序员来说,写 E4 比写 11100100 容易得多,即使计算机将它们读作完全相同的东西。


8. 未来:二进制 vs. 量子计算

在过去的 70 年里,二进制系统一直占据主导地位。然而,一个新的挑战者正在出现:量子计算

二进制的限制

在经典计算中,位必须是01。它不能同时是两者。这限制了可以同时处理的数据量。为了解决更困难的问题,我们只是添加更多的晶体管。但我们正在达到可以制造多小的晶体管的物理限制。

量子位

量子计算机使用量子位(Quantum Bits)。由于称为叠加的现象,量子位可以存在于 0、1 或同时是 0 和 1的状态。

虽然经典的 2 位系统一次只能保持四种状态之一(00、01、10 或 11),但 2 量子位系统可以同时保持所有四种状态

这种处理能力的指数增长意味着量子计算机不仅仅是「更快」的二进制计算机——它们是一个完全不同的范式,能够解决(如分子模拟或破解加密)需要二进制计算机数百万年的问题。

然而,在可预见的未来,标准二进制计算机仍将是消费电子产品、网页浏览和一般软件的标准。


总结

二进制不仅仅是一串零和一;它是将电力的物理世界转换为信息的逻辑世界的最有效方式。

  • 它很简单: 只有两种状态,开和关。
  • 它很强健: 对电气噪声和错误具有抵抗力。
  • 它是通用的: 能够表示文字、图像、声音和逻辑。

从古代的《易经》到最新的 iPhone,二进制的概念塑造了人类历史。理解它让你瞥见现实的「矩阵」——为我们现代文明提供动力的无形逻辑。

所以,下次你按下键盘上的按键时,记住:你正在发送一串微观的 0 和 1,以光速在电路中竞速,延续跨越数个世纪的数学和工程遗产。


常见问题(FAQ)

1. 谁发明了二进制代码?

虽然数学家戈特弗里德·威廉·莱布尼茨被认为在 17 世纪后期正式记录了现代二进制数字系统,但使用二进制组合的概念可以追溯到古代文化,包括中国的《易经》(公元前 9 世纪)和印度学者 Pingala(公元前 2 世纪)。

2. 为什么计算机不使用十进制(基数-10)?

计算机使用电力运作。构建能够检测两种不同状态(高电压 vs. 低电压)的硬件比检测十种不同状态要容易得多且更可靠。使用二进制可以最大限度地减少由电气干扰(噪声)引起的错误。

3. 二进制代码与机器代码相同吗?

是也不是。机器代码是最低级别的编程语言,完全由 CPU 直接执行的二进制数字组成。然而,「二进制代码」是一个更广泛的术语,可以指任何以 0 和 1 表示的数据,包括文件、图像和文字,而不仅仅是可执行的指令。

4. 用你的手指在二进制中可以数到多高?

在十进制中,你可以在手指上数到 10。在二进制中,如果你将每个手指视为一个位(手指向上 = 1,手指向下 = 0),你只需用两只手就可以数到1,02321012^{10} - 1)!

5. 二进制会被取代吗?

对于一般计算(手机、笔记本电脑),二进制不太可能很快被取代,因为它高效且具有成本效益。然而,对于专业的高性能任务,量子计算(使用量子位)正在开始取代二进制的限制,提供经典二进制机器不可能达到的处理速度。

管理员

管理员

什么是二进制?计算机语言的完整指南 | 博客