计算机是如何工作的:人人都能懂的计算机软硬件工作原理
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.4 位和字节

十进制数中的单个位或符号称为数字(digit)。像1247这样的十进制数就是一个四位数。类似地,二进制数中的单个位或符号称为位(bit)。每个位都可以是0或1。像0b110这样的二进制数就是一个3位数。

单个位能传递的信息很少:要么关,要么开;要么0,要么1。我们需要用位序列来表示更复杂的东西。为了让这些位序列更易于管理,计算机把8位分成一组——称为字节。下面是一些位和字节的例子(因为都是二进制,所以省略了前缀0b):

1 这是一个位

0 这还是一个位

11001110 这是一个字节或8位

00111000 这也是一个字节

10100101 这还是一个字节

0011100010100101 这是两个字节或16位

注意

4位数(即半个字节)有时被称为半字节(写为nybble或nyble)。

一个字节能存储多少数据呢?考虑这个问题的另一个思路是:用8位可以得到多少个不同的0/1组合?在回答这个问题之前,我们用4位来说明,这样更容易看明白。

在表1-1中,我列出了4位数中所有可能的0/1组合,还给出了与该数字对应的十进制表示。

如表1-1所示,我们可以用4位数表示16个不同的0/1组合,范围从十进制的0到15。查看位的组合列表有助于说明这一点,但是我们还有几种方法可以解释这个问题,而不用枚举每种可能的组合。

表1-1 4位数的所有可能值

通过把所有位都设置为1,我们可以确定4位能表示的最大数字,即0b1111。这就是十进制的15。如果把表示的0也算上,那么得到的总数就是16。另一种简便的方法是取2的位数次幂,这里位数为4,那么总共有24=2×2×2×2=16个0/1组合。

研究4位数是一个好的开始,不过我们前面谈论的是字节,它有8位。按照上面的方法,我们可以列出全部的0/1组合,但是我们跳过这一步,直接采用简便方法,计算2的8次方,可以得到256,这就是一个字节所含的不同组合的数量。

现在,我们知道了一个4位数可以有16种0/1组合,一个字节可以有256种组合。这和计算机有什么关系呢?假设一个计算机游戏有12个关卡,那么这个游戏只需要4位就可以轻松地保存当前关卡号。如果游戏有99个关卡,那么4位就不够用了,4位最多只能表示16个关卡!但是,一个字节就能很好地处理99个关卡的需求。计算机工程师有时需要考虑用多少位或多少字节来保存数据。