当前位置:首页 > 猜想榜 > 我们世界的构成

我们世界的构成

发布者:夜空下的凝视 点击量:4566 推荐量:2 发布时间:2019-03-02

    计算机世界是由0和1组成,那我们的世界是由什么组成?

    按照天人相应的观点,我们的世界也应该是由0和1(或者无和有、阴与阳)组成。

    

    计算机世界中的数值、汉字、字母、声音、照片、电影,以及处理这些信息的程序所包含的指令,都是用0和1来表示的。

    所以,只要了解0和1的编码和解码方式就可以生成我们眼中的计算机世界

    那么,我们的世界是否也可以用这种方式生成我们的世界应该如何生成

 

    计算机世界是如何将0与1变成我们眼中计算机的显示内容?

    来看看计算机中的图像是如何显示的?

    首先要知道01(二进制)如何表示数,假设位数是4位的话,
    0001->1
    0010->2
    0011->3
    ...
    左边是二进制,右边是十进制。这样任何数值都可以表示了。
    我们通过三棱镜把白色的光分解成七种不同颜色的光。后来通过各种实验发现红,绿,蓝三种颜色的光是无法被分解的,因此就称红绿蓝为光的三原色。

 

 

    这样,人类已经明白可以通过组合不同比例的红,绿,蓝三种颜色来得到各种各样的颜色。那么就可以在计算机上模拟了。

    第一个要解决的问题是,每个颜色分量有多少个级别呢?假设三个分量只用一位(1 bit)来表示,那么就是0,1,也就是说,红色只有【有】与【无】两种情况,其他颜色也一样,因此三个颜色组合在一起就是2 * 2 * 2 = 8种颜色。那这样是在是太不实用了。

    现在的计算机,一般使用32位来表示颜色,32位平分给四个分量,也就是每个分量8位。(为什么是四个颜色分量?)
    其实,现在的颜色模型中有一个alpha值,用来表示透明度的,你可能会见到过ARGB这样的玩意,A就是表示alpha。

    那么红色Red,绿色Green,蓝色Blue,每个都有8位的空间来表示,能表示的级别就有2 ^ 8 = 256种啦。也就是:
    0000 0000 -> 0
    0000 0001 -> 1
    ...
    1111 1111 -> 255
    这样三种不同的颜色以不同的级别组合在一起就可以表示 256 * 256 * 256 = 16777216种颜色,这应该够用了吧……

    你能理解以上的内容,那么就可以明白图像(image)是怎么存储的啦。
    先来看一张图片。

 

 

    这张图像的尺寸是600px * 664px。
    你可能会问px是啥玩意,px -> pixel -> picture element,你可以理解为一个点,这个点通常还是一个正方形的。我们把它放大一下。如下图所示:


 

    看见了吗?实际上,大部分图像(拍摄的,用PS绘制的,扫描的,各种)都是位图文件,位图就是由像素点构成的,它就像是一个网格一样,每个格子里面填一个颜色。(除了位图外,还有一种图是矢量图)。

    我们将之前的图片存储为原来的1 / 4大小(155px * 166px),因为像素点变少了,我们看到的图像就很粗糙,不够细腻,看上去有锯齿。

 

 

    注:此图像为截图,并不是缩小为1 / 4的原图,为了保证效果,放大到和上面原图相当的尺寸后截图下来的。

    现在你一定理解了图像是由像素构成的,像素就是一个正方形,图像就是由一大堆小正方形堆叠起来的一个大矩形。

    接下来我们只需要把上面颜色的编码和这里像素的知识结合在一起,你就明白图像是如何存储在计算机里的了。

 

 

    如上图所示。a是一个2 * 2的小图像,总共有4个像素,每个像素呢,由三种颜色构成(b),而每种颜色呢,由8位构成(c),然后根据小图像的颜色,把颜色值写出来,为了方便书写,用16进制表示,如d图所示,四组数字,分别对应着小图像的四个像素。

    可以把数值写成一行方便传输,但是如果传输给别人的话,别人也许明白每组数值为颜色值,但是它可能会把图像解析成4 * 1的图像,因此需要带上一些额外的信息,表示图像有多大的尺寸,因此可以加一些字段,比如width:2,height:2。甚至可以加更多的字段,比如时间,作者,颜色深度,是否支持alpha……

    01和图像大致上就是这个关系。
    但实际应用中,图像还伴随着压缩,因为如果耿直得存储这些图像(现在的手机,相机动不动就几百万像素),可以简单的计算一下,电脑能存放几张图片就用完了你的硬盘……

    最后关于视频,视频实际上就是很多张图像放成一个序列,然后轮着放出来而已。当然,这也伴随着压缩,虽然单张图像的压缩技术搞得蛮不错了,但是耿直的存储它们的话(像云图这种三个小时的电影),估计也不行。

    

    计算机中的数值、字符、声音和指令的生成也和图形图像差不多。

   

    计算机中的程序是如何执行的?

程序源代码都是以人类语言写成的。需要将人类语言翻译为计算机语言。

计算机能听懂的语言,就叫做机器语言,简称机器码。

计算机处理器提供了一套它能够支持的运算操作的集合,称为“指令集”。指令集限定了该处理器能够进行的所有运算。而且这些运算通常都是关于数字的运算。所以,如果想解决一个问题,那么首先要把这个问题转换为一个数字问题,再把数字问题的解答过程,用指令集当中的指令求解。

将其它问题转换为数学问题的一种方法就是编码。处理器的指令集同样是经过编码的。所以才能用二进制数字流来表示指令。

在计算机中,一般用若干个二进制位表示一个数或一条指令,把它们作为一个整体来处理、存储和传送。这种作为一个整体来处理的二进制位串,称为计算机字。表示数据的字称为数据字,表示指令的字称为指令字。

指令集中的每一个指令都可以这样编码。每一条指令都定义了一系列的操作。如此,只要按照顺序从存储器读入指令代号和数据,就可以让程序执行下去。

处理器为了能顺序的取指并执行,需要知道当前指令的下一条指令在哪里。为了记录当前指令的下一条指令的位置,处理器内部设置了一个存放这种地址的电子装置,实际上这种装置是一系列门电路组成的锁存器,叫做 IP 寄存器(也有叫做 PC 的,这里统称为 IP)。IP 的值可以在运行时被修改。那么只要提供了能够修改 IP 值的指令,就能改变程序的执行流程。可以返回到之前的某个位置,也可以一次前进到之后的某个位置。这个过程叫做“跳转”。所谓循环和判断,本质上都是判断并跳转。

当程序整个装入内存以后,IP将被(另外的某个程序,可能来自操作系统,或者其它软件)设置为 1,意思是:下一条要读取的指令在 1 的位置。然后处理器就开始读入指令。为什么处理器会读入指令呢?它是收到某个信号才会读指令吗?简单的讲,处理器从上电到掉电的整个过程当中只做三件事情,那就是:1、从内存读取一条指令和指令携带的操作数,同时 IP + 1。2、解码并执行指令。3、回到 1。所以不需要什么信号。在上一条指令将 IP 的值修改为 1 之后,处理器就已经完成跳转,找到程序入口了。

处理器将指令送入解码器,解码结果告诉处理器应当执行某项操作,然后继续取出下一条指令。直到断电。

所以,计算机程序的执行过程简单来说就是:输入能被指令集执行的高级语言——>编译器编码成计算机能懂的二进制机器码——>处理器解码执行


或许我们的世界也可以如此操作!

计算机与程序不在一个维度,在比程序更高的维度。我们的世界也许就是一个程序,我们这个程序的计算机也在更高维度,所以我们找不到它,但却能与之沟通。我们的高级语言或许是符箓之类,真正的符箓可以被我们的世界处理并反馈。

我们该如何创造或使用一门适用于我们世界的高级语言,用于发出我们的请求?

 

如果你也同意此观点,请点

上一篇: 人是机器

下一篇: 世界猜想

我要发表评论: