零 亲密挚友
1、由通信引发的思考
如果你的好友就住在你家街道对面,你们卧室的窗户正好彼此相对。如此情况下,如果你俩想在夜晚通信,会用什么方式呢?
街道这边的小明通过手电筒闪光一次,告诉街道对面的小红:“要睡觉了么?”
小红通过手电筒闪光两次,表示“不是的”。
后面他们想通过手电筒表达的更复杂一点,就将约定好的表述记载在纸上:
手电筒闪光方式 | 表达的意思 |
闪光一次 | yes |
闪光两次 | no |
闪光三次 | how are you |
闪光四次 | i'm fine,thank you! |
亮光五秒 | 吃的啥 |
亮光五秒+闪光1次 | 吃的鱼香肉丝 |
··· | ··· |
后面小红就用这个约定好的方式在晚上和小明一起通信,开始了快乐的夜晚时光。。
2、何谓编码
上面的例子中我们可以看到,约定好的表达方式就是小明和小红用来对手电筒发出指令的编码。比如,闪光五次表示问吃的啥。但小红手电筒接触不良,闪了8次,但小红没有注意到闪烁了八次,那小明看到了岂不是很懵逼,他没有从编码表格中找到闪烁八次代表啥意思。
莫尔斯电码其实和这种表示方式很类似。它有短闪和长闪两种表示方式,通过他俩的组合,来表示不同的英文字母(如下图-来源于网络)。
通过两种方式组合,可以表示更多的信息,也可以更方便的表示。比如如果仅仅是通过闪烁来表示二十六个字母(闪烁一次表示a,闪烁两次表示b,闪烁三次表示c ····),那表示How are you,需要闪烁131次,而用摩尔斯电码仅仅需要敲点或横32次。
在这本书中,编码这个词的意思是指,一种用来在机器和人之间传递信息的方式。换言之,编码就是人与机器之间的交流。
当然,如果你和你的朋友,想表达的更复杂一点,可以用摩尔斯电码来创建出空格的表示方式,也可以创造出小写字母的表示方式,甚至传造出各种标点符号以及运算符的表示方式。一切来源于创造
壹 编码和组合
1、思考摩尔斯电码的组合方式
通过上一章中,摩尔斯电码表格,我们可以看出,二十六个英文字母,点和划组合起来的长度最长为四。
实际上,一个长度,可以表示两个字母组合
. | E |
- | T |
两个长度表示四个字母组合
.. | I | -. | N |
.- | A | -- | M |
三个长度表示八个字母组合
... | S | -.. | D |
..- | U | -.- | K |
.-. | R | --. | G |
.-- | W | --- | O |
四个长度表示十六个字母组合
.... | H | -... | B |
...- | V | -..- | X |
..-. | F | -.-. | C |
..-- | 'U | -.-- | Y |
.-.. | L | --.. | Z |
.-.- | 'A | --.- | Q |
.--. | P | ---. | 'O |
.--- | J | ---- | 'S |
我们可以看到,四个长度最多可以表示2+4+8+16一共三十个字母,英文字母一共二十六个,那剩下的四种组合表示了重音字母。
通过上面四个长度的摩尔斯电码组合,我们可以得到一个很有趣的规律:
点和划的数目 | 可以表示的字母的数量 | 可以表示的字母的数量 |
1 | 2 | 2^1 |
2 | 2 X 2 | 2^2 |
3 | 2 X 2 X 2 | 2^3 |
4 | 2 X 2 X 2 X 2 | 2^4 |
字母数量=2^("点"和"划"的数量)。但这也看起来平平无奇古天乐嘛。仔细想想是不是二进制和这个很类似呢!!!
2、莫尔斯电码的进一步发展
其实我们可以把摩尔斯电码的位数继续扩展,我们扩展到五位,可以表示2+4+8+16+32共计62中组合,其中可以用五个长度的编码来表示数字0~9,以及16个标点符号。实际中,摩尔斯电码就是用五位长度来表示数字的。当然,也包括表示重音字母,但不用来表示标点符号。此时,我们就可以将其扩展至6位,共计126种组合,那可以充分表示大小写字母、数字、重音字符、标点符号了,甚至还包括一些转义字符。
3、总结
其实莫尔斯电码也是被称作二进制码,因为这种编码仅有两个元素,“点”和“划”。这种两个元素组合方式也经常运用在我们的生活中,如抛筛子(六个元素)、掷硬币。他们在《概率统计》中也有详细的讲解。摩尔斯电码的发展,对计算机的研究还是很有意义的。
贰 布莱叶盲文和二进制码
塞缪尔.摩尔斯并不是第一个将书面语言的字母成功编码的人。实际上,在因自己名字被用来命名某种编码方式而名声大噪的人中,他也不是第一人,此荣誉为路易斯.布莱叶。
让我们来解析布莱叶盲文,看看它是如何工作的。
1、布莱叶盲文系统
在布莱叶盲文中,每个符号都被编码成2 X 3的编码单元中的一个或多个突起的点。
其中你会发现,大写字母A和数字1编码一致,这种情况布莱叶盲文是如何解决的呢?通过Number所表示的编码来解决,当碰到数字时,会在数字开始之前先写上number的编码,以此告知盲文读者,接下来表示的时数字(被称为优先码或换挡码)。
四号凸点,表示音调符号。
六号凸点,Capltal表示大写字符,碰到大写字符时,先在前面刻出六号Capltal编码,以告知接下来的一个字符是大写字符(被称为逃逸码)。
其他相同的编码但表示不同意思的字符,也是通过这种类似的方式进行区分的。
2、二级布莱叶盲文系统
通过上面布莱叶盲文对照表,我们可以看到,某些编码下还对应着单词。
二级布莱叶盲文使用了很多缩写。这是当字母编码单独出现时(间隔距离大于字母间隔),他们就会被当作一个单独的单词,用来表示常用的单词。