前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >暗号与二进制

暗号与二进制

作者头像
用户1608022
发布2018-04-11 13:41:28
1.3K0
发布2018-04-11 13:41:28
举报

「暗号」这个词的意义想必大家都熟悉, 它也是人与人的一种交流方式,只是它的规则并不如我们使用的语言或文字一样由大众所掌握, 因此当人们想传递一些私密的信息又不想为他人所知时便会使用暗号。在电影或小说之中, 就经常会有使用暗号的场景, 比如在小说改编的电影「智取威虎山」中座山雕和杨子荣的对话,座山雕:天王盖地虎, 杨子荣:宝塔镇河妖。咋一听还以为他们在对对联,其实翻译过来的意思是,座山雕说:你好大的胆子, 敢来气你祖宗;杨子荣回话:要是我是来气你的, 叫我从山上摔死, 掉进河里淹死。 还有如在金庸小说「鹿鼎记」中天地会使用的接头暗号,随便来两段

“地振高罡,一脉溪山千古秀。” ,“门朝大海,三合河水万年流。”

另外还有

“有没有清恶毒、便盲眼复明的清毒复明膏药?” ,“有是有,价钱太贵,要三两黄金,三两白银。” ,“五两黄金,五两白银卖不卖?”

听起来是不是很傻逼,按照正常的逻辑根本无法理解话语中所表达的意思 ,这就是暗号的作用, 不清楚他规则的人根本不了解他所表达的意义。

当然这种类型的暗号可能只是小说的作者在创作时自己拍脑袋歪歪出来的,真实性有待商榷, 而且这种暗号没有一丝系统的规律性, 所能表达的含意有限。事实上暗号这种东西是真正存在的, 而且有着非常广泛的应用范围,知名的如「摩尔斯电码」 ,「布莱叶盲文」,甚至聋哑人交流时用的手语, 对于不懂得规则的普通人来说也是一种暗号。

在今年署期的由张家辉与古天乐主演的中国香港电影「使徒行者」中便有许多次使用「摩尔斯电码」的场景。剧中的角色们用手指、硬币敲击桌子或者以开枪的方式, 将不同的节奏组合在一起表达出不同的意义。如快速的用手指敲桌子两下表示“I”,慢速的敲两下表示“M”,慢速敲一下快速敲三下表示“B”,快速敲一下慢速敲三下表示“J”,合在一起就是“IMBJ”也就是“I'm Black Jack”,如果不掌握「摩尔斯电码」的规则是不是压根就不知道他们在表达什么? 粗心一些说不定还意识不到他们原来是在以另一种方式说话。 这就是一种现代化的暗号。

如果把他们敲击桌子的表达方式转换成书面的形式,以点号(.)表示快速的敲击,以下划线(_)表示慢速的敲击, 那么“I'm Black Jack(IMBJ)”这句话就将被转换成 . . _ _ _ . . . . _ _ _ 这种点线结合的方式可以表达到所有的英文字母(不区分大小写)、数字,还有几个常用的符号。如下图

通过观察可以发现,「摩尔斯电码」表示字母数字和符号时,最短为一位,最长为六位,每一位只有两种情况,不是点号就是线条,之间隔了一个空格, 其它就没什么东西了。

一位摩尔斯电码,只能表示2种情况 . _ 也就是点或线,对照上表, 表示的字符是E和T。

二位摩尔斯电码,只能表示4(2×2)种情况 _ _ _ . . . . _ 对照上表,表示的字符是M,N,I,A。

三位摩尔斯电码,能表示8(2×2×2)个符字,也就是2的3次方。

同理推得,四位摩尔斯电码能表示16个字符,也就是2的4次方;五位摩尔期电码能表示32个字符,也就是2的5次方;六位表示64个字符,也就是2的6次方。如果记忆力够好脑子够用,也可以7位8位9位这样一直表示上去。

事实上,两种不同的事物,可以是点和线,也可以是两种不同的声音,两种不同的闪烁,只要组合得当,就可以表达出任何信息,关键是数字2。

如果将「摩尔斯电码」中的点和线替换成0和1,那么摩尔斯电码表达的信息就是一组组由0和1组成的数字,这就是电脑程序运行的基础「二进制」

电脑很有用,即可以帮我们工作,也可以让我们娱乐。但电脑的大脑,也就是我们所说的中央处理器(CPU)其实却是个四肢发达头脑简单的东西,它除了0和1以外什么都不认得。然而,它却可以同时处理数以亿万计0和1的信息,换句话说,它以力量速度上的优势均衡了智力上的缺陷。 

CPU所处理的0和1并不是数字意义上的0和1,它只是两种状态,可以是开关的闭合和打开,也可以是灯泡的熄灭和点亮,使用0和1只是为了便于我们表达方便而已。

CPU的发展史想必大家都清楚,从刚开始的继电器、电子管,到晶体管,再到现在的集成电路。然而,这些电子器件,本质上都是一定数量的逻辑开关,只是数量从刚开始的几百几千,到现在的上百亿。如摩尔定律所预示的:价格不变时,集成电路上可容纳的元器件的数目,约每隔18-24个月便会增加一倍,性能也将提升一倍。因此现在电脑更新换代的速度极快。 

可以把CPU内部的逻辑电路想像是成千上万的微型的手电筒,当推上手电铜的开关,电路连通,手电就铜亮了;当滑下开关,电路断开,手电铜就灭了。这一开一关,就是0和1的切换,电路通,手电铜亮代表1;电路断开,手电铜灭了代表0。CPU的内部就是有无数个这样的手电铜,被分成许许多多不同的小组,在亮和灭之间有序的切换,以表达出各种不同类型的信息,所表达出来的数据往往会被打包成32个一组或64个一组来进行运输。

这就是现代计算机最底层工作机制了,它好似一种暗号,没有人类暗号的复杂性,但却有着人类大脑跟不上的变化速度和装不下的容量;它没有人类大脑聪明的优势,却弥补了人类大脑懒惰的不足。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-11-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 带你撸出一手好代码 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档