计算机系统解密:从理解计算机到编写高效代码
上QQ阅读APP看书,第一时间看更新

1.3 比特

我们先从容器说起。在人类语言中它可能被称为字符,在计算机中可能被称为比特(bit)。比特这个词是二进制(binary)和十进制数字(digit)的尴尬结合。说它尴尬,是因为二进制意味着它表示的东西有两个部分,而十进制数字是表示组成我们日常数字系统的10个符号(0~9)中的一个。下一章将介绍为什么要使用比特,现在只需要知道比特成本很低,很容易建立就足够了。

比特是二进制的,这意味着一个比特容器只能容纳两个符号中的一个,有点像莫尔斯电码中的点和破折号。莫尔斯电码只用两个符号,通过将这些符号用不同的组合串起来表示复杂的信息。比如“点–破折号”表示字母A,“破折号–点–点–点”表示B,“破折号–点–破折号–点”表示C,等等。就像人类语言一样,符号的顺序很重要,例如“破折号–点”表示N而不是A。

符号的概念是抽象的。它们代表什么不重要,它们可以代表开或闭,也可以代表白天或黑夜,还可以代表鸭或鸡。但请记住,语言离不开语境。如果发送人以为自己说的是U(点–点–破折号),但接收人听到的是鸭–鸭–鹅,那么表达的事物就会变得很奇怪。

本章后续部分将介绍一些用于计算比特分配的常见方法。请记住,这里面涉及很多假设——例如,你可能会看到这样的语句:“我们假设这个比特代表蓝色。”编程其实就是这样,所以即使你将了解到标准的比特用途,也不要害怕在适当的时候自己发明自己的用法。