网络流量控制与通信协议精通
二进制与字符编码
二进制:计算机的语言
计算机的核心非常简单。它不懂人类语言,只认识两种状态:开和关,或者说,高电平和低电平。我们用数字 1 和 0 来表示这两种状态。这就是二进制系统,是所有数字技术的基础。
位 (Bit)
noun
“位”是“二进制数字”的缩写,是计算机中数据的最小单位。一个位只能是 0 或 1。
单个位能表示的信息非常有限。为了表示更复杂的数据,我们将它们组合在一起。
字节 (Byte)
noun
一个字节通常由 8 个位组成。这是计算机处理数据的基本单位。
一个 8 位的字节有多少种组合方式?答案是 $2^8$,也就是 256 种。因此,一个字节可以表示从 0 (二进制的 00000000) 到 255 (二进制的 11111111) 的任何整数。这个范围对于表示数字和基本字符来说已经足够了。
从数字到文字
我们已经知道如何用位和字节表示数字,但如何表示字母、标点符号甚至表情符号呢?这就要靠字符编码了。
字符编码本质上是一本字典,它为每个字符分配一个唯一的数字。当你在键盘上输入字母“A”时,计算机会查找这个字母对应的数字,然后将这个数字转换成二进制形式进行存储或传输。
字符编码就是一套将字符映射到数字的规则。
UTF-8:通用解决方案
在互联网早期,存在着许多不同的字符编码标准,这导致了一个常见的问题:乱码。如果发送方和接收方使用的“字典”不同,文本就会显示为一堆无意义的符号。
为了解决这个问题,人们创造了 Unicode,这是一个旨在包含世界上所有字符的统一标准。而 UTF-8 则是实现 Unicode 的最流行、最通用的编码方式。
技术基础始于 Unicode (UTF-8) 编码。
UTF-8 的一个绝妙之处在于它是一种可变长度编码。这意味着它会根据字符的不同,使用不同数量的字节来表示。
对于简单的英文字母和数字,它只用 1 个字节,这与传统的 ASCII 编码完全兼容。对于其他语言的字符,如中文、日文或表情符号,它会使用 2 到 4 个字节。
| 字节数 | 编码范围 | 示例 |
|---|---|---|
| 1 字节 | 基本的拉丁字母、数字 | A, b, 7, $ |
| 2 字节 | 希腊字母、西里尔字母等 | α, Я, © |
| 3 字节 | 常见的中、日、韩字符 | 你, 好, こんにちは |
| 4 字节 | 不常用字符和表情符号 | 𠮟, 😂, 🚀 |
这种设计非常高效。对于以英语为主的文本,文件大小与使用旧编码时差不多。而对于需要表示多种语言的复杂文本,它也能完美胜任,从而使全球范围内的信息交换变得无缝。
理解二进制和 UTF-8 对于我们了解数据在网络上的存储和传输方式至关重要。你发送的每条消息、你浏览的每个网页,都依赖于这些基本概念才能正确显示。
计算机最基础的交流方式是基于什么系统?
一个标准的字节(byte)由8个位(bit)组成,它可以表示多少个不同的值?
