计算机通信协议入门
二进制与数字系统
数字系统:不仅仅是 0 到 9
我们每天都在使用数字,从购物到看时间。我们最熟悉的系统是十进制,也叫基数-10 系统。为什么叫基数-10?因为它使用了十个符号(0、1、2、3、4、5、6、7、8、9)来表示所有数字。每个数字的位置都有一个特定的值,这个值是 10 的幂。例如,数字 253 实际上是:
但计算机的思维方式不同。它们的世界由数十亿个微小的开关组成,每个开关只能处于“开”或“关”两种状态。为了代表这两种状态,计算机使用了一个只有两个符号的数字系统:0(关)和 1(开)。这就是二进制,也叫基数-2 系统。
二进制是所有数字技术的基础,从你的智能手机到复杂的超级计算机,一切都以 0 和 1 来运行。
在十进制与二进制间转换
将我们熟悉的十进制数转换成计算机能理解的二进制数,是一个简单的过程。最常用的方法是“除以 2 取余数”。
我们来试试把十进制数 29 转换成二进制。方法如下:
- 用 29 除以 2。
- 记下商和余数。
- 只要商不为 0,就继续用新的商除以 2。
- 最后,将所有余数从下往上倒序排列,就得到了二进制数。
反过来,从二进制转换到十进制同样简单。我们需要用到每个位置的值,即 2 的幂。我们以二进制数 11101 为例。从右边第一位开始,位置的值分别是 $2^0, 2^1, 2^2$, 依此类推。然后,将二进制数中每一位上的数字(0 或 1)与其对应的位置值相乘,最后将所有结果相加。
更紧凑的表达:十六进制
二进制数可能会变得非常长,不方便读写。想象一下 1111101011001110 这样的数字!为了解决这个问题,程序员经常使用十六进制,也叫基数-16 系统。
十六进制系统使用 16 个符号:数字 0-9 和字母 A-F(A 代表 10,B 代表 11,以此类推,直到 F 代表 15)。这种表示法更短、更易于管理。
| 十进制 | 十六进制 | 二进制 |
|---|---|---|
| 0 | 0 | 0000 |
| 1 | 1 | 0001 |
| 2 | 2 | 0010 |
| 3 | 3 | 0011 |
| 4 | 4 | 0100 |
| 5 | 5 | 0101 |
| 6 | 6 | 0110 |
| 7 | 7 | 0111 |
| 8 | 8 | 1000 |
| 9 | 9 | 1001 |
| 10 | A | 1010 |
| 11 | B | 1011 |
| 12 | C | 1100 |
| 13 | D | 1101 |
| 14 | E | 1110 |
| 15 | F | 1111 |
十六进制最大的优势在于它和二进制之间的转换非常简单。由于 $16 = 2^4$,每个十六进制数字都恰好可以表示四位二进制数。要将一个长的二进制数转换为十六进制,只需从右到左,每四位分为一组,然后将每组转换为对应的十六进制符号即可。
例如,我们来转换二进制数 11010110:
- 把它分成两组四位数:
1101和0110。 - 从上表中查找,
1101对应十六进制的D。 0110对应十六进制的6。
所以,11010110 在十六进制中就是 D6。是不是比处理一长串 0 和 1 简单多了?
这些数字系统不仅仅是理论知识,它们在计算机科学的每个角落都发挥着作用。无论是处理数据、定义颜色还是在内存中定位信息,二进制和十六进制都是程序员和工程师每天使用的基本工具。
准备好测试一下你对数字系统的理解了吗?
为什么计算机主要使用二进制系统?
将十进制数 29 转换为二进制的结果是什么?
理解这些不同的数字系统是掌握计算机工作原理的第一步。它们是计算机用来交流和处理信息的语言基础。
