China-bub.com 下载 第9章二进制数 1973年,当安东尼·奥兰多在他写的一首歌中要求他挚爱的人“系一条黄色的绸带在橡 树上”时,他并没有要求他的爱人进行繁琐的解释或冗长的讨论,只要求她给他一个简单的 结果。他不去关心其中的因果,即使歌中复杂的感情和动情的历史在现实生活中重演,所有 的人真正想知道的仅仅是一个简单的是或不是。他希望在树上系一条黄色的绸带来表示:“是 的,即使你犯了很大的错,并且被判了入狱三年,我仍希望你回来和我一起共渡时光。”他希 望用树上没有黄色的绸带来表示:“你连停在这里都别想。” 这是两个界线分明、相互排斥的答案。奥兰多没有这样唱:“如果你想再考虑一下的话, 就系半条黄色的绸带”或者“如果你不爱我但仍希望我们是朋友,就系一条蓝色的绸带吧” 相反,他让答案非常的简单。 和黄色绸带的有无具有同样效果的另外几个例子(但可能无法用在诗里)是可以选择一 种交通标记放在院外,可能是“请进”或“此路不通”。 或者在门上挂一个牌子,上写“关”或“开” 或者用从窗口能够看到的一盏灯的亮灭来表示。 如果你只需说“是”或“不是”的话,可以有很多种方式来表达。你不必用一个句子来 表达是或不是,也不需要一个单词,甚至连一个字母都不要。你只要用一个比特,即只要一 个0或1即可。 正如我们在前面的章节中所了解到的,通常用来计数的十进制数事实上并没有什么与众 不同的地方。非常清楚,我们的数字系统之所以是基于10的(十进制数)是因为我们有10个 手指头。我们同样有理由使用八进制数字系统(如果我们是卡通人物)或四进制数字系统 (如果我们是龙虾),甚至是二进制数字系统(如果我们是海豚) 但是,二进制数字系统有一点儿特别:它可能是最简单的数字系统。二进制数字系统中 只有两种二进制数字0和1。要是我们想寻求更简单的数字系统,只好把数字1去掉,这样, 就只剩下0一个数字了。只有一个数字0数字系统是什么都做不成的。 “bit(比特”这个词被创造出来代表“binary digit”,它的确是新造的和计算机相关的最可 爱的词之一。当然,“bit”有其通常的意义:“一小部分,程度很低或数量很少”。这个意义用 来表示比特是非常精确的,因为1比特一一个二进制数字位一确实是一个非常小的量。 有时候当一个新词诞生时,它还包含了一种新的意思。bit这个词也是这样。1比特的意思 超过了被海豚用来数数的二进制数字位所包含的意义。在计算机时代,比特已经被看作是组 成信息块的基本单位。 当然,上述说法不一定完全正确,比特并不是传送信息的唯一的方式。字母、单词、摩 尔斯码、布莱叶盲文,十进制数字都可以用来传递信息。比特传递的信息量很小。1比特只具 备最少的信息量,更复杂的信息需要多位比特来传递。(我们说比特传递的信息量小,并不是 说它传送的信息不重要。事实上黄绸带对于与它相关的两个人来说是一个非常重要的信息。) “听,孩子们,你们很快就能听到 Paul Revere午夜的马蹄声。”享利·朗费罗写道。尽管
下载 第9章 二 进 制 数 1 9 7 3年,当安东尼·奥兰多在他写的一首歌中要求他挚爱的人“系一条黄色的绸带在橡 树上”时,他并没有要求他的爱人进行繁琐的解释或冗长的讨论,只要求她给他一个简单的 结果。他不去关心其中的因果,即使歌中复杂的感情和动情的历史在现实生活中重演,所有 的人真正想知道的仅仅是一个简单的是或不是。他希望在树上系一条黄色的绸带来表示:“是 的,即使你犯了很大的错,并且被判了入狱三年,我仍希望你回来和我一起共渡时光。”他希 望用树上没有黄色的绸带来表示:“你连停在这里都别想。” 这是两个界线分明、相互排斥的答案。奥兰多没有这样唱:“如果你想再考虑一下的话, 就系半条黄色的绸带”或者“如果你不爱我但仍希望我们是朋友,就系一条蓝色的绸带吧”。 相反,他让答案非常的简单。 和黄色绸带的有无具有同样效果的另外几个例子(但可能无法用在诗里)是可以选择一 种交通标记放在院外,可能是“请进”或 “此路不通”。 或者在门上挂一个牌子,上写“关”或“开”。 或者用从窗口能够看到的一盏灯的亮灭来表示。 如果你只需说“是”或“不是”的话,可以有很多种方式来表达。你不必用一个句子来 表达是或不是,也不需要一个单词,甚至连一个字母都不要。你只要用一个比特,即只要一 个0或1即可。 正如我们在前面的章节中所了解到的,通常用来计数的十进制数事实上并没有什么与众 不同的地方。非常清楚,我们的数字系统之所以是基于 1 0的(十进制数)是因为我们有 1 0个 手指头。我们同样有理由使用八进制数字系统(如果我们是卡通人物)或四进制数字系统 (如果我们是龙虾),甚至是二进制数字系统(如果我们是海豚)。 但是,二进制数字系统有一点儿特别:它可能是最简单的数字系统。二进制数字系统中 只有两种二进制数字—0和1。要是我们想寻求更简单的数字系统,只好把数字 1去掉,这样, 就只剩下0一个数字了。只有一个数字 0的数字系统是什么都做不成的。 “b i t (比特)”这个词被创造出来代表“ binary digit”,它的确是新造的和计算机相关的最可 爱的词之一。当然,“b i t”有其通常的意义:“一小部分,程度很低或数量很少”。这个意义用 来表示比特是非常精确的,因为 1比特—一个二进制数字位—确实是一个非常小的量。 有时候当一个新词诞生时,它还包含了一种新的意思。 b i t这个词也是这样。1比特的意思 超过了被海豚用来数数的二进制数字位所包含的意义。在计算机时代,比特已经被看作是组 成信息块的基本单位。 当然,上述说法不一定完全正确,比特并不是传送信息的唯一的方式。字母、单词、摩 尔斯码、布莱叶盲文,十进制数字都可以用来传递信息。比特传递的信息量很小。 1比特只具 备最少的信息量,更复杂的信息需要多位比特来传递。(我们说比特传递的信息量小,并不是 说它传送的信息不重要。事实上黄绸带对于与它相关的两个人来说是一个非常重要的信息。) “听,孩子们,你们很快就能听到 Paul Revere 午夜的马蹄声。”享利·朗费罗写道。尽管
第章二述制数49 下载 他在描述 Paul revere是怎样通知美国人英国殖民者入侵的消息时不一定与史实完全一致,但 他的确提供了一个利用比特传递信息的令人茅塞顿开的例子: He said to his friend"If the British march By land or sea from the town to-night Hang a lantern aloft in the belfry arch Of the North Church tower as a special light,- One, if by land, and two, if by sea (他告诉他的朋友:“如果英军今晚入侵, 你就在北教堂的钟楼拱门上悬挂点亮的提灯 作为信号。一盏提灯代表英军由陆路入侵 两盏提灯代表英军由海路入侵 也就是说, Paul revere的朋友有两盏灯。如果英军由陆路入侵,他就挂一盏灯在教堂的 钟楼上;如果英军由海路入侵,他就挂两盏灯在教堂的钟楼上。 然而,朗费罗并没有将所有的可能都涉及到。他留下第三种情况没有说,那就是英军根 本就没有入侵的情况。朗费罗已经暗示第三种可能的信息可以由不挂提灯的方式来传递 让我们假设那两盏灯是永久固定在教堂钟楼上的。在正常情况下,它们都不亮 就是指英军还没有入侵。如果一盏提灯亮 表示英军正由陆路入侵。如果两盏提灯都亮:
他在描述Paul Revere是怎样通知美国人英国殖民者入侵的消息时不一定与史实完全一致,但 他的确提供了一个利用比特传递信息的令人茅塞顿开的例子: (他告诉他的朋友:“如果英军今晚入侵, 你就在北教堂的钟楼拱门上悬挂点亮的提灯 作为信号。一盏提灯代表英军由陆路入侵, 两盏提灯代表英军由海路入侵。…… ) 也就是说,Paul Revere 的朋友有两盏灯。如果英军由陆路入侵,他就挂一盏灯在教堂的 钟楼上;如果英军由海路入侵,他就挂两盏灯在教堂的钟楼上。 然而,朗费罗并没有将所有的可能都涉及到。他留下第三种情况没有说,那就是英军根 本就没有入侵的情况。朗费罗已经暗示第三种可能的信息可以由不挂提灯的方式来传递。 让我们假设那两盏灯是永久固定在教堂钟楼上的。在正常情况下,它们都不亮: 这就是指英军还没有入侵。如果一盏提灯亮: 表示英军正由陆路入侵。如果两盏提灯都亮: 第9章 二 进 制 数 49 下载 或
50编码的奥 China°pdc 下 表示英军正由海路入侵 每一盏提灯都代表一个比特。亮着的灯表示比持值为1,未亮的灯表示比特值为0。前面 奥兰多已经说明了传送只有两种可能性的信息只需要一个比特。如果 Paul revere只需被告知 英军正在入侵(不管是从何处入侵)的消息,一盏提灯就足够了。点亮提灯代表英军入侵, 未点亮提灯代表又是一个和平之夜 传递三种可能性的消息还需要再有一盏提灯。一旦再有一盏提灯,两个比特就可以通知 有四种可能的信息 00=英军今晚不会入侵 01=英军正由陆路入侵 10=英军正由陆路入侵 11=英军正由海路入侵 Paul revere将三种可能性用两盏提灯来传送的做法事实上是相当富有经验的。用通信理 论的术语说,他采用了冗余的办法来降低噪声的影响。通信理论中的噪声是指影响通信效果 的任何事物。电话线路中的静电流显然是影响电话通信的一种噪声。然而,即使是在有噪声 的情况下,电话通信仍能够成功,因为口语中存在大量的冗余。你同样可以听懂对方的话而 无需将每个音节、每个字都听得很清楚。 在上述例子中,噪声是指晚上光线黯淡以及 Paul revere距钟楼有一定的距离,它们都阻 碍了 Paul revere声将钟楼上的两盏灯区分清楚。下面是朗费罗的诗中很重要的一段 And lo! As he looks, on the belfry's height a glimmer, and then a gleam of light! He springs to the saddle, the bridle he turn till full on bis sight A second lamp in the belfry burn (哦!他站在与钟楼等高的位置观察, 一丝微光,然后,有一盏灯亮了! 他跳上马鞍,调转马头 徘徊,凝视,直到看清所有的灯 另一盏灯也亮了!) 那当然不是说 Paul revere正在辨清到底是哪盏灯先亮的问题。 这里最本质的概念是信息可能代表两种或多种可能性的一种。例如,当你和别人谈话时, 说的每个字都是字典中所有字中的一个。如果给字典中所有的字从1开始编号,我们就可能精 确地使用数字进行交谈,而不使用单词。(当然,对话的两个人都需要一本已经给每个字编过 号的字典以及足够的耐心。) 换句话说,任何可以转换成两种或多种可能的信息都可以用比特来表示。不用说,人类 使用的很多信息都无法用离散的可能性来表示,但这些信息对我们人类的生存又是至关重要 的。这就是人类无法和计算机建立起浪漫关系的原因所在(无论怎样,都希望这种情况不会 发生)。如果无法将某些信息以语言、图片或声音的形式表达,那也不可能将这些信息以比特 的形式编码。当然,你也不会想将它们编码。 举手或不举手是一个比特的信息。两个人是否举手一就像电影评论家 Roger ebert和刚去
50 编码的奥秘 下载 表示英军正由海路入侵。 每一盏提灯都代表一个比特。亮着的灯表示比持值为 1,未亮的灯表示比特值为 0。前面 奥兰多已经说明了传送只有两种可能性的信息只需要一个比特。如果 Paul Revere只需被告知 英军正在入侵(不管是从何处入侵)的消息,一盏提灯就足够了。点亮提灯代表英军入侵, 未点亮提灯代表又是一个和平之夜。 传递三种可能性的消息还需要再有一盏提灯。一旦再有一盏提灯,两个比特就可以通知 有四种可能的信息: 0 0 =英军今晚不会入侵 0 1 =英军正由陆路入侵 1 0 =英军正由陆路入侵 11 =英军正由海路入侵 Paul Revere将三种可能性用两盏提灯来传送的做法事实上是相当富有经验的。用通信理 论的术语说,他采用了冗余的办法来降低噪声的影响。通信理论中的噪声是指影响通信效果 的任何事物。电话线路中的静电流显然是影响电话通信的一种噪声。然而,即使是在有噪声 的情况下,电话通信仍能够成功,因为口语中存在大量的冗余。你同样可以听懂对方的话而 无需将每个音节、每个字都听得很清楚。 在上述例子中,噪声是指晚上光线黯淡以及 Paul Revere距钟楼有一定的距离,它们都阻 碍了Paul Revere声将钟楼上的两盏灯区分清楚。下面是朗费罗的诗中很重要的一段: (哦!他站在与钟楼等高的位置观察, 一丝微光,然后,有一盏灯亮了! 他跳上马鞍,调转马头, 徘徊,凝视,直到看清所有的灯 另一盏灯也亮了!) 那当然不是说Paul Revere正在辨清到底是哪盏灯先亮的问题。 这里最本质的概念是信息可能代表两种或多种可能性的一种。例如,当你和别人谈话时, 说的每个字都是字典中所有字中的一个。如果给字典中所有的字从 1开始编号,我们就可能精 确地使用数字进行交谈,而不使用单词。(当然,对话的两个人都需要一本已经给每个字编过 号的字典以及足够的耐心。) 换句话说,任何可以转换成两种或多种可能的信息都可以用比特来表示。不用说,人类 使用的很多信息都无法用离散的可能性来表示,但这些信息对我们人类的生存又是至关重要 的。这就是人类无法和计算机建立起浪漫关系的原因所在(无论怎样,都希望这种情况不会 发生)。如果无法将某些信息以语言、图片或声音的形式表达,那也不可能将这些信息以比特 的形式编码。当然,你也不会想将它们编码。 举手或不举手是一个比特的信息。两个人是否举手—就像电影评论家Roger Ebert和刚去
Chinapub.com 如章二述制数51 下载 世不久的 Gene siskel对新影片提供他们最终的评价结果那样——一传递两个比特的信息。(我们 将忽略掉他们实际上对影片做的评语,而只关心他们有没有举手的问题。)这样,我们用两个 比特代表四种可能: 他们都不喜欢这部影片 01= Siskel讨厌它, Ebert喜欢它 10= Siskel喜欢它, Ebert讨厌它 l1= Siskel和 Ebert都喜欢它 第一个比特值代表 Siskel的意见,0表示 Siskel讨厌这部影片,1表示 Siskel喜欢这部影片 同样,第二个比特值代表 Ebert的意见。 因此,如果你的朋友问你 Siskel和 Ebert是怎么评价《 Impolite Encounter》这部电影的,你 不用回答“ Siskel举手了, Ebert没有举手”或者“ Siskel喜欢这部电影,Eber不喜欢这部电影”, 你可以简单地回答“么零”。你的朋友只要知道哪一位代表的是 Siskel的意见,哪一位代表的 是 Ebert的意见,并且知道值为1代表举手,值为0代表没有举手,你的回答就是可以被人理解 的。当然,你和你的朋友都要知道这种代码的含义。 我们也可以一开始就声明值为1的比特位表示没有举手,值为0的比特位表示举手了,这 可能有点违反常规。通常我们会认为值为1的比特位代表正面的事情,而值为0的比特位代表 相反的一方面,这的确只是一种很随意的指派。无论怎样,用此种代码的人只要明白0、1分 别代表什么就可以了。 某一位或几位比特位的集合所代表的意义通常是和上下文相关的。橡树上的黄绸带可能 只有系绸带的人和期望看到绸带的人知道其中的意思,改变绸带的颜色、系绸带的树或系绸 带的日期,绸带可能会被认为只是一块毫无意义的破布。同样,要从 Siskel和 ebert的手势中 得到有用的信息,我们至少要知道正在讨论的是哪部影片。 如果你保存了 Siskel和 Ebert对一系列影片的评价和投票结果,你就有可能在表示 Siskel和 ebert意见的比特信息中再增加一位代表你自己的观点的比特位。增加的第三位使得其代表的 信息可能性增加到8种: 000= Siskel讨厌它, ebert讨厌它,我讨厌它 001= Siske讨厌它, Ebert讨厌它,我喜欢它 010= Siskel讨厌它, Ebert喜欢它,我讨厌它 0l1= Siskel讨厌它, Ebert喜欢它,我喜欢它 100= Siskel喜欢它, Ebert讨厌它,我讨厌它 l0l= Siskel喜欢它, Ebert讨厌它,我喜欢它 110= Siskel喜欢它,Eber喜欢它,我讨厌它 l1= Siskel喜欢它,Eber!喜欢它,我喜欢它 使用比特来表示信息的一个额外好处是我们清楚地知道我们解释了所有的可能性。我们 知道有且仅有8种可能性,不多也不少。用3个比特,我们只能从0数到7,后面再没有3位二进 制数了 在描述 Siskel和 Ebert的比特时,你可能一直在考虑一个严重的,并且是令人烦恼的问题 对于 Leonard maltin的Move& Video guide怎么办呢?别忘了, Leonard maltin是不采用举
世不久的Gene Siskel对新影片提供他们最终的评价结果那样—传递两个比特的信息。(我们 将忽略掉他们实际上对影片做的评语,而只关心他们有没有举手的问题。)这样,我们用两个 比特代表四种可能: 00 = 他们都不喜欢这部影片 01 = Siskel 讨厌它,E b e r t喜欢它 10 = Siskel 喜欢它,E b e r t讨厌它 11 = Siskel和E b e r t都喜欢它 第一个比特值代表 S i s k e l的意见,0表示S i s k e l讨厌这部影片, 1表示S i s k e l喜欢这部影片。 同样,第二个比特值代表E b e r t的意见。 因此,如果你的朋友问你S i s k e l和E b e r t是怎么评价《Impolite Encounter》这部电影的,你 不用回答“S i s k e l举手了,E b e r t没有举手”或者“S i s k e l喜欢这部电影,E b e r t不喜欢这部电影”, 你可以简单地回答“么零”。你的朋友只要知道哪一位代表的是 S i s k e l的意见,哪一位代表的 是E b e r t的意见,并且知道值为 1代表举手,值为0代表没有举手,你的回答就是可以被人理解 的。当然,你和你的朋友都要知道这种代码的含义。 我们也可以一开始就声明值为 1的比特位表示没有举手,值为 0的比特位表示举手了,这 可能有点违反常规。通常我们会认为值为 1的比特位代表正面的事情,而值为 0的比特位代表 相反的一方面,这的确只是一种很随意的指派。无论怎样,用此种代码的人只要明白 0、1分 别代表什么就可以了。 某一位或几位比特位的集合所代表的意义通常是和上下文相关的。橡树上的黄绸带可能 只有系绸带的人和期望看到绸带的人知道其中的意思,改变绸带的颜色、系绸带的树或系绸 带的日期,绸带可能会被认为只是一块毫无意义的破布。同样,要从 S i s k e l和E b e r t的手势中 得到有用的信息,我们至少要知道正在讨论的是哪部影片。 如果你保存了S i s k e l和E b e r t对一系列影片的评价和投票结果,你就有可能在表示 S i s k e l和 E b e r t意见的比特信息中再增加一位代表你自己的观点的比特位。增加的第三位使得其代表的 信息可能性增加到8种: 000 = Siskel讨厌它,E b e r t讨厌它,我讨厌它 001 = Siskel讨厌它,E b e r t讨厌它,我喜欢它 010 = Siskel讨厌它,E b e r t喜欢它,我讨厌它 0 11 = Siskel讨厌它,E b e r t喜欢它,我喜欢它 100 = Siskel喜欢它,E b e r t讨厌它,我讨厌它 101 = Siskel喜欢它,E b e r t讨厌它,我喜欢它 110 = Siskel喜欢它,E b e r t喜欢它,我讨厌它 111 = Siskel喜欢它,E b e r t喜欢它,我喜欢它 使用比特来表示信息的一个额外好处是我们清楚地知道我们解释了所有的可能性。 我们 知道有且仅有8种可能性,不多也不少。用 3个比特,我们只能从0数到7,后面再没有3位二进 制数了。 在描述S i s k e l和E b e r t的比特时,你可能一直在考虑一个严重的,并且是令人烦恼的问题 —对于Leonard Maltin的Movie &Video Guide怎么办呢?别忘了,Leonard Maltin是不采用举 第9章 二 进 制 数 51 下载
52 编码的奥秘 China-pub. coM 下载 手表决这种形式的,他对电影的评价用的是更传统的星级系统。 要想知道需多少个 Maltin比特,首先要了解一些关于 Maltin评分系统的知识。 Maltin给电 影的评价是1~4颗星,并且中间可以有半颗星。(仅仅是为了好玩,他实际上不会给电影只评 一颗星,取而代之的是给一个BOMB[炸弹]。)这里总共有七种可能性,也就是说只需要3 个比特位就可以表示一个特定的评价等级了 000= BOMB 001=★1/2 010=★★ 011=★★1/2 100=★★★ 101=★★★1/2 110=★★★★ 你可能会问11l怎么办呢,111这个代码什么意义都没有,它没有定义。如果二进制代码 11i被用来表示 Maltin等级,那一定是出现错误了。(这可能是计算机出的错误,因为人不会给 出这样的评分。) 前面我们曾用两个比特来代表 Siskel和 Ebert的评价结果,左边的一位代表 Siske的评价意 见,右边的一位代表 Ebert的评价意见。在上述 Maltin评分系统中,各个比特位都有确定的意 义吗?是的,当然有。将比特编码的数值加2再除以2,就得到了 Maltin评分中对应的星的颗 数。这样编码是由于我们在定义代码时遵循了合理性和连贯性,我们也可以下面的这种方式 编码: 000=★★★ 001=★1/2 010=★★1/2 011=★★★★ 101=★★★1/2 110=★★ 111=BOMB 只要大家都了解代码的含义,这种表示就和前述代码一样,都是合理的 如果 Maltin遇到了一部连一颗星都不值得给的电影,他就会给它半颗星。他当然有足够的 代码来表示半颗星的情况,代码会像下面这样定义 000=MAJOR BOMB 001=BOMB 010=★1/2 011=★★ 100=★★1/2 10l=★★★ 11l=★★★★
52 编码的奥秘 下载 手表决这种形式的,他对电影的评价用的是更传统的星级系统。 要想知道需多少个 M a l t i n比特,首先要了解一些关于 M a l t i n评分系统的知识。 M a l t i n给电 影的评价是1~4颗星,并且中间可以有半颗星。(仅仅是为了好玩,他实际上不会给电影只评 一颗星,取而代之的是给一个 B O M B[炸弹]。)这里总共有七种可能性,也就是说只需要 3 个比特位就可以表示一个特定的评价等级了: 000 = BOMB 001 = ★1 / 2 010 = ★★ 0 11 = ★★1 / 2 100 = ★★★ 101 = ★★★1 / 2 110 = ★★★★ 你可能会问111怎么办呢, 111这个代码什么意义都没有,它没有定义。如果二进制代码 111被用来表示M a l t i n等级,那一定是出现错误了。(这可能是计算机出的错误,因为人不会给 出这样的评分。) 前面我们曾用两个比特来代表 S i s k e l和E b e r t的评价结果,左边的一位代表 S i s k e l的评价意 见,右边的一位代表 E b e r t的评价意见。在上述 M a l t i n评分系统中,各个比特位都有确定的意 义吗?是的,当然有。将比特编码的数值加 2再除以2,就得到了 M a l t i n评分中对应的星的颗 数。这样编码是由于我们在定义代码时遵循了合理性和连贯性,我们也可以下面的这种方式 编码: 0 0 0 =★★★ 0 0 1 =★1 / 2 0 1 0 =★★1 / 2 0 11 =★★★★ 1 0 1 =★★★1 / 2 11 0 =★★ 111 = B O M B 只要大家都了解代码的含义,这种表示就和前述代码一样,都是合理的。 如果M a l t i n遇到了一部连一颗星都不值得给的电影,他就会给它半颗星。他当然有足够的 代码来表示半颗星的情况,代码会像下面这样定义: 000=MAJOR BOMB 0 0 1 = B O M B 0 1 0 =★1 / 2 0 11 =★★ 1 0 0 =★★1 / 2 1 0 1 =★★★ 11 0 =★★★1 / 2 111 =★★★★