从编码到二进制
从编码到二进制
传递信息
现代我们传递信息的主要方式有文字,图像,语音等等。这在计算机底层中表示方式均为二进制,这是怎么做到的呢?
我们小时候考试的时候就知道,要想作弊,互相两个人可能需要事先约定好一些手势,例如ABCD四个选项用不同的手势来表示,而这也就是我们启蒙时期的主动编码。而早在1837年摩尔斯就发明了一种编码方式来表达所有的26个字母甚至更多的数字和符号。这种编码方式使用了两种符号,点和划。用不同的点和划进行组合,表示了许多的字母,数字和符号。还有一种叫做布莱叶编码的二进制编码方式,是供给盲人使用。人们发明了这种编码让不能直接看到文字和不能直接听到文字的人也能够接收到正确的信息。
我们知道,声音传播的距离不过几百米甚至更短。如何将我们想要表达的信息快速而又准确的传递到数百米千米甚至数百公里之外呢?这在当时19世纪是一个棘手的问题。传统的方式是使用书信,由火车或者是马车去送,而这花费的时间往往太长。声音传播的距离和速度有限,而光呢?光可以在极短的速度内从一点到另一点,可不可以用光来传递信息呢?我们知道电灯有开和闭两种状态,通过控制这两种状态,与二进制编码方式组合,便可以表达出我们想要传递的信息。
计数
人类的计数方式都是十进制,因为人都有是个手指,digit不仅代表数字也代表手指的意思。而对于其他动物来说会有不同,例如卡通人物计数方式就是8进制,因为他们只有8个手指。对于螃蟹来说是4进制,因为他们有两个鳌,一个鳌有两个钳。而对于鲨鱼来说是二进制,因为它有两个鱼鳍。这看上去十分滑稽,可事实规律便是如此,这是对于任意一个物种最简单的计数方式。而对于电路呢?显然是二进制,因为有通和断两种状态。理论上,只要有两种不同的事物,经过有限次组合就可以表示出任意事物。例如我们可以用二进制对26个英文字母编码,而有了26个字母再经过组合就已经足以表达自然中所有的事物了。而正是二进制成为了现实编码和计算机编码的沟通桥梁。
小学,不对,幼儿园的时候老师就有教过我们如何算数。开始都是使用手指来计算,后来我们学会了阿拉伯数字的计数方式。这种计数方式为什么能够在众多计数方式中脱颖而出在世界范围内广泛受用呢?还有一种计数方式在现在也很流行,那叫做罗马计数法。而为什么主流大众不采用罗马计数法呢?在阿拉伯数字中有0到9总共10个数字,这与十进制是对应的。十进制名字叫做十进制,而在阿拉伯数字中倒是没有单独的字符来表达“十”这个概念。而采用了一种“进位”的方式。十进制逢十进一,于是“十”就用10来表示。进一步,“一百”也就是十个“十”,那么我们可以写作“100”。不知道读者有没有发现,阿拉伯计数法中,数字所表示的大小与位置有关。例如100这个数字。最右边,表示0个1;中间表示0个10,最左边表示1个100。于是100也就可以写成这样\(100 = 1 * 10^2 + 0*10^1+0*10^0\),以最右边为第0位,往左边依次递增。看上去这样表示非常的笨拙,事实也的确如此,正常人不会没事把数字写成这样。
但,如果不是十进制而是八进制呢?让我们抛开十进制中数字中100的含义,看接下来的内容:
在这种表示方法下,100可以写成这样\(100=1*8^2 + 0*8^1 + 0*8^0\),这也等于十进制中的64。
更极端一点,我们考虑二进制的表达方式:
\(100 = 1*2^2 + 0*2^1 + 0*2^0\),这也就是二进制中的4。
显然我们没法写出一进制的数字。二进制便是极端。这几个例子也说明了阿拉伯计数法的先进,只要有足够多的位数,就可以使用二进制表达出所有的数字。而这还有另一层含义,如果不能用语言,声音,图像等等方式来表达某种信息,那么也一定不能够用二进制来表达。

浙公网安备 33010602011771号