计算机语言是如何做到靠0和1就表达出这么多东西的?

对计算机语言不太懂,只是突然想到文字已经是很简略的表达方式了,相对于视频和图画来说,中文可以用横竖撇捺,英文用ABCD,但是好像计算机语言中只需要0和…
关注者
67
被浏览
39,437

31 个回答

这里不可或缺的一环是“编码”,这个技术或者说概念也不是计算机独创的,早先有电报,再往前有旗语,更早还有结绳记事。

我们平时用的语言文字很复杂,一条消息可以有很多个字,但电报只有点和划两种表达,类似于计算机的0和1,但是我们可以把复杂的文字消息都用点和划来编码,这个对于普通人都不难做到,你只要弄本小册子,保证每个字的编码不重复就行了,这样就可以通过电报传递复杂的文字信息。

同样的,计算机语言也可以有很复杂的语法,也可以有很复杂的结构,但我们也可以用和电报类似的办法把复杂的计算机程序进行编码。

然后回到题主最有嚼头的问题,是不是所有事情都能用0和1来编码。

对于这个问题,我们可以通过英文字母和中文汉字的电报码比较来管中窥豹一下。

下面是中文的编码,可以看到每个中文是4个数字,如果你要发报就需要参考上面的数字电码来逐一发送(当然,可以采用短码发送,不过这就是另一个话题了--数据压缩或者霍夫曼编码)

中文电码本:1983年《标准电码本(修订本)》

我们自然就会发现,同样是电报编码,中文编码要比英文复杂很多,编码长度也会长很多。

可以说是一个中文字的信息量更大,也可以说是中文编码的信息墒更高,因为如果咱们两个是通过电报聊天,你用英文的话,你下一个字母只有26种可能,但是中文可能会有几千甚至几万个可能。

那如果我们把整个宇宙都编码了呢?宇宙的变化的可能性是不是有限的呢?我要说是有限的,也就是能被编码,那宇宙也就可以变成计算机里能跑的程序,那是不是我们周围发生的一切是不是某种程度来说都是命中注定的呢?当然,这就是另外一个话题了。。。。

我觉得对宇宙编码还是可行的,也有科学家估算了当前宇宙的总信息量,而且就合宇宙中的能量一样,也是在不断的从有序变成无序。在宇宙还是个奇点的时候,这奇点不管物理学家如何解释,它里面的状态是一致的,也没有时间,也没有空间,也就是说你最少可以用一个比特,也就是一对0和1就可以表达,即它炸了还是没炸,炸了就是1,没炸就是0。但当大爆炸以后,宇宙逐渐变得无序,或者说散乱,有太阳,有地球,也有月亮,它们的状态不一样,就像不同的中文字一样,所以你就需要更多的0和1来表达。这里就有一个非常好的问题,到底最少需要多少0和1才能表达现在宇宙呢,对于计算机科学或者信息学来说就是这么长的编码你最少需要多大的存储空间呢?

汉字的笔划有哪些?传统的汉字基本笔画有八种,即“点(丶)、横(一)、竖(丨)、撇(丿)、捺(㇏)、提(㇀)、折( )、钩(亅)”,又称“永字八法”。

而《现代汉语通用字表》则规定了5类基本笔画:横类、竖类、撇类、点类、折类。

无论是横竖撇捺,还是ABCD等26个字母,本质上和01没有太大的区别。

我们可以仔细想想,八种笔划、二十六个字母、两个数字,这其实是一回事,没有本质上的区别。如果你能理解二十六个字母是怎样构成成千上万的单词,那你自然能理解01是怎么样表达如此多的意思。

这里拿ASCII码举个例子,对应图如下:

可以看到,大写字母A由ASCII码中的65表示,也就是二进制中的01000001来表示,B则是由01000010来表示,这样一路表示到小写z结束。

如此一来就把二进制和26个字母做了一个映射,如果你能理解英文是如何用ABCD等字母表示所有意思的,那通过这样的映射,二进制不就也可以表示所有的意思了吗?

但实际的计算机内还不止于此,二进制每8比特(即8位)构成一个字节,对于单字节的ASCII字符来说,8比特二进制值就能代表一个字符。而对于汉字这样的多字节字符,需要将其按字节切分,每个字节分别用8比特来表示。多字节字符又涉及到不同的字符集编码,例如Unicode、UTF-8、GB18030等。例如“中”字,Unicode使用4字节表示,UTF-8使用3字节,GB18030则使用2字节不同的编码表示。这样就又将汉字与二进制做了一个映射,通过这样的映射,二进制不就也又可以表示所有的意思了吗?

至于图像,视频等,也不过都是许许多多的二进制流的表示罢了

例如图像,也就是先把二进制和颜色之间做了一个映射,然后对图像划横线和竖线做一个切分,切分完成之后的每块都是一个像素点,然后给这个像素点分配一个代表该块颜色的二进制数字,呈现的时候再把每块像素中所包含的二进制数字转换成其所代表颜色,这样一幅图就完成了。

至于视频,也可以简单看成是一系列图的连续播放

这样一来,是不是对二进制如何表达复杂的东西有了一个大致的了解?

可以看到,实际上横竖撇捺,字母和01,它们所能表达意思的数目和他们本身的数目关系不大,只要位数够长,排列组合就会有很多种,表达的意思自然就会增长,表达普通人认可的“所有的意思”,也就自然不是问题了。