奎克的藏经阁 · 原书印刷页

编码 隐匿在计算机软硬件背后的语言 · 第 77 页

PDF 物理页索引 93 · 编码隐匿在计算机软硬件背后的语言

书名
编码 隐匿在计算机软硬件背后的语言
作者
未记录
印刷页
77
PDF 物理页
93(从 0 开始)
章节
编码隐匿在计算机软硬件背后的语言
UUID
38270854-596f-4a26-8183-db8c968c6020
来源类型
original_book
页面 SHA-256
5d0f5b7de884d2d26052bf9b23ef1b4766135e8fe5953a9cd05c1846babfc2bb

要想知道需多少个马丁比特,首先必须了解这个系统的一些情况。马丁给电影的评价是1\~4颗星,并且中间可以有半颗星,为了好玩,实际上他不会给电影只评一颗星,而是用“BQMB(炸弹)”来代替。这里总共有7种可能性,也就意味着我们可以用三个比特位来表示某个评价等级了:

$$
\begin{array} { l } { 0 0 0 = \mathrm { B O M B } } \\ { 0 0 1 = \star 1 / 2 } \\ { 0 1 0 = \star \star } \\ { 0 1 1 = \star \star 1 / 2 } \\ { 1 0 0 = \star \star \star } \\ { 1 0 1 = \star \star \star 1 / 2 } \\ { 1 1 0 = \star \star \star \star } \end{array}
$$

你可能会问:“111呢?”在这里,这个编码不代表任何意义。它没有定义。如果二进制代码111被用来表示马丁的评价,那么你就会知道一定是出错了(计算机有可能会出现这样的错误,因为人不会给出这样的评分)。

之前提到过,当我们用两个比特位来表示西斯科和艾伯特的评价时,左边一位表示的是西斯科的意见,右边一位表示的则是艾伯特的意见。在上述马丁的评分系统中,每个单独的比特位都有确定的意义吗?是的,当然有。如果将比特码的数值加2,再除以2,我们就得到了马丁评分中对应的星星的数量。但这仅仅是由于我们以一种合乎人们对数字含义体验的方式定义了编码。我们同样也可以将编码作如下定义:

$$
\begin{array} { l } { 0 0 0 = \star \star \star } \\ { 0 0 1 = \star 1 / 2 } \\ { 0 1 0 = \star \star 1 / 2 } \\ { 0 1 1 = \star \star \star } \\ { 1 0 1 = \star \star \star } \\ { 1 1 0 = \star \star \star 1 / 2 } \\ { 1 1 0 = \star \star } \\ { 1 1 1 = \star 0 \mathrm { M B } } \end{array}
$$

只要每个人都明白它的意义,这个编码就与先前的编码同样有效。

如果马丁遇到了一部甚至连一颗星都不值得给的电影,他会给出半颗星。他也当然会有足够的编码来表示半星选项。此时,编码会像下面这样定义:

9 二进制数

77