关于计算1+1=2,电脑到底经历了什么?底层到底是如何工作的?

2019-04-13 11:34发布

前言:(我尽量会讲的比较比较详细,然后我们跳过深的话题,涉及一点点底层。)

   现在我们几乎每天都要上网。首先我们都是需要输入URL(网址),然后返回一些内容,也就是我们看到的东西(结果页面)。今天我想给大家讲讲从输入网址,到按下回车键,到底发生了哪些事。(希望大家能够耐心看完,只要大致懂每个环节是什么就行。这里涉及硬件,底层,软件等等一些知识)。-----------不管你是学生,还是已经工作了,希望这篇文章都对你有帮助哈。-----------不知道大家有没有想过一个问题,我们自然界本来就只有泥土,岩石,河流,阳光等等之类的东西。到底是怎么演变成今天的世界的?可能你曾经甚至会感慨什么是电?到现在你可能会去想什么是电脑,什么是互联网。它是怎么工作的,本来自然界只有泥土给我们,是如何演变成今天的互联网的新时代,当然都要全部历程都讲一遍,可能一天也讲不完(而且我也讲不了哈哈)。

分割-------------------------------------------

硬件部分(涉及到一些 模电,数电 等等知识,后面文章讲软件,网络架构大方向)

why  计算机能够算出 1 + 1 = 2 ? 什么是1 ? 什么是2 ? 什么是 + ?在自然界最先只有泥土给我们的地球,我们该如何标识这些东西? 

    我想从上面的简单一道题目开始讲起,其实我们都知道计算机只有0和1两种东西。那么什么是0?什么是1?其实我们定义0和1就是电压的高低,就是低电平就是0,高电平就是1 。具体电压多少判断是0和1,就要看电压的阀值定义的多少,比如阀值定义成1.5v。我们定义1.5v以下的就是0,1.5v以上的就是1。这就是计算机的0和1 。然后你也会问什么是电压?什么是电?(兄dei,这样回答的话我写到天亮也回答不完。当然,我这里还是啰嗦回答一下,大神略过)    电的本质是带电粒子的定向移动,我们规定正电荷移动的方向为电流方向。金属导体主要就是靠电子运动来导电的,我们都知道原子核外部都是电子,然后说白了就是高中的一些物理,化学的东西。为什么我们常说金属会导电?我简单讲一下:然后我们都知道原子是电中性的,所以原子核是带正电,核外电子带负电,然后电子一直绕着原子核做运动。(可以类比飞船绕着地球运动)。但是金属内部原子核比较大,然后每个金属原子原本就是紧密连在一起,甚至会使原子核之间产生相交,产生重叠,引力相互影响,然后使得最外层的电子轨道也可能相互挨着,正常情况下,可能还是保持电子是一种平衡状态。但是一旦有任何的风吹草动,然后电子就会脱离原子核,沿着风吹草动的方向定向移动,这就是电流!卧槽,原来这就是电流,简单嘛,那么风吹草动哪里来。这里我举一个例子。你们记不记得那个谁?(找个大佬照片不容易)。对,那个法拉第的人,不知道他是闲着无聊还是怎么的,就拿闭合的导线去切磁感线(磁感线就是两个磁铁之间的空间)。卧槽,居然产生了电流,结果他就出名了啊(因为从此磁可以生电了),还是牛逼(当然,这些都是非人类,随便一个举动都是人类的转折点)。这里应该没人问我铁和磁铁怎么来的吧。(铁其实就是一些矿石,里面含有(Fe2O3、Fe3O4、FeO),然后我们找一些还原剂(C、CO、H2)然后用火烧,还原成铁(Fe)。然后磁铁是一种氧化铁Fe3O4,这种材料具有磁性       --------看到这,你或许就说,我擦,这不都是我高中学过的东西,电流不就是这些鬼东西,铁不就是石头里面提炼出来的吗。好好好,接下来这些东西我就不讲那么详细了。 其实我想说的就是,计算机的很多原理,就和我们高中学的东西一样,其实也都是一样都是我们学过的,差的是我们细心总结(当然,我还是渣渣。)好,我继续讲1 + 1 = 2.     接下来普及一些底层的知识,来,我科普一些完成1+1=2需要用到的主要元器件:晶体管(有P型和N型),三极管        若在半导体中掺入5价元素就会形成电子型半导体(N型半导体),其中多数载流子为电子(负电),
        若在半导体中掺入3价元素就会形成空穴型半导体(P型半导体),其中多数载流子为空穴(正电),
        将PN两种半导体结合在一起,称为PN结,当P区为正极,PN结正向偏置,反之亦然,
        当正向偏置时电阻极小称为导通状态,当反向偏置时电阻较高称为截止状态,        这就是半导体的开关效应。

    

        讲了这么多晶体管(二极管,三极管,场效应管等)有什么作用? 其中重要的一个就是开关效应,可以让你往一个方向走,而不能逆方向走(很重要的特性)。
比如A到B是导通状态。

     电流   A-->---->---->---->---->---->B    OK         

     电流    B --->-->--->----->---->---->A   不OK(截止状态)

        给一个图: 不想看的不要看,不影响     三种情况的开关    
        好,我接来下还是讲一下三极管(是由晶体管构成的):我们只要记住有NPN,PNP两种类型的三极管,还是看图or直接看我结论
        总之这么一个东东作用就是:  它可以规定电流导通,截止,可以让电流放大,缩小,等等(想到模电当时各种NPN,PNP公射,共集,共基,场效应,MOS管等。。多么痛的领悟)。        现在讲重点了!! 下面四个逻辑运算很重要,计算机一切的逻辑运算就是由下面基础构成的,包括我们的什么+  ,- , x , 除。
          与:两个输入一个输出,当两个都是1时候才是1,反之0。          或:两个输入一个输出,只要有一个1结果就是1,反之0。          非:一个输入一个输出,输出总与输入相反,反之0。
            与非:两个输入一个输出,当两个输入均为1时输出0,反之输出1                        或非:两个输入一个输出,当两个输入均为0时输出1,反之输出0                        异或:两个输入一个输出,当两个输入不同时输出1,反之输出0                        同或:两个输入一个输出,当两个输入相同时输出1,反之输出0         下面就是逻辑门的基本元器件,就是这些鬼东东,由刚才前面说的晶体管(二极管,三极管等等管组成)。           
        比如我们看第一个图的与门,D2就是刚才说的“开关”,电流只能从一个方向移动,也就是三角形的指的方向。设想一下 比如A和B输入端,有任何一个是低电平(也就是0),这样Vcc的电压就会流过A或者B,电压全部落在电阻上。这样L点的电压是不是就变成0了?如果A和B都是大电压,这样没有电流,因为二极管方向只能规定流向A或者B,而不能是A和B流出。这样L点和Vcc电压都是一样的,因为电阻上没有电压,故L是1(高电平)。这就是上面说的与门 组成原理。 同理CMOS电路也是一样的, 输入是A和B,通过图中单向导通,我们组合场晶体管(效应管),就会有上面的逻辑门。       然后我们需要逻辑门的组合,整一个加法器。 这里大家应该都知道什么是2进制吧。 就是计数时候满2进1。       比如 2位2进制有  00  01  10 11       分别代表  0 (0x2的1次方+0x2的0次方)  1(0x2的1次方+1x2的0次方)    2(1x2的1次方+0x2的0次方)   3  (1x2的1次方+1x2的0次方)        然后我们想要的结果无非就下面几种情况  两个XY表示输入,一个F输出,一个C进位,下面列出8种情况。(不用看,看结论)    无进位0+0=0
    无进位0+1=1
    无进位1+0=1
    无进位1+1=0(进位)
    进位0+0=1
    进位0+1=0(进位)
    进位1+0=0(进位)
    进位1+1=1(进位)
    因此我们设计的电路应该有3个输入线分别用来输入两个加数和一个进位信号,2个输出线分别输出运算结果和进位信号
    我们在等号左边用F表示运算结果,C表示进位信号
    等号右边XY表示输入的加数,C表示进位信号输入
    则得出真值表达式:
    F  = X(非Y)(非C) + (非X)Y(非C) + (非X)(非Y)C + XYC
    C = XY(非C) + X(非Y)C +(非X)YC + XYC
    据此设计如下图左侧所示的电路并化简
    进位信号表达式可简化为:
    C = XY + XC + YC

结论是  我们发现了加法符合这样的逻辑门关系:F  = X(非Y)(非C) + (非X)Y(非C) + (非X)(非Y)C + XYC  一位输出
C = XY + XC + YC    进位  我们根据公式,然后设计出下面的逻辑门电路的组合。

总之你只要知道,设计成这样的电路,输入0或者1,就可以算出对应的1位加法器。然后如果是算多位的加法的话,就把他们连起来,如下图。其中加法器,下面的图是最简单的了。我记得还有什么74LS181什么的贼复杂,图我就不放出来了。
上面这幅图的意思就是   可以做两个4位2进制的数相加了

到这,我们已经大致讲了一下,真正底层设计和实现加法器了。当然还有一些显示屏,外界硬件设备的控制输出,这些也是更高的话题。
我这里就用了1 + 1 = 2 比较详细的解释了一遍。 其实底层很多很多这样的东东,远比我们想的复杂,接下来我就只讲一下概念。

分割-------------------------------------------

介绍一下编码和解码,其实计算机底层只有 0 或者 1的二进制, 我们看到的任何文字,图片,无非都是这些组成的。 所以我们就要约定,什么情况下,什么数字对应什么东西。比如:ASCII编码用数字代替字符,位图文件逐一记录各个像素点的RGB颜 {MOD}(00AAFF什么的)
文件的后缀名就是用来告诉计算机这个数据的编码方式,比如:
EXE指令数据
TXT文本
JPG位图
下图提供了ASCII编码下各个字符与数字的对应关系,这种标准已经沿用许久,甚至早到显示器还没有发明,因此那时候这个编码被用于打印机,可能有一些内容现在的已经无效,但是为了保证老设备兼容性而没有修改。
然后就会对应解码,解码就是把对应的东西,拆成01010101,其实和加法底层都是一样,都是一些逻辑电路,编码,译码器。关于底层我就设计这么多吧,就是希望能够给大家一个印象,能够了解元器件工作的原理。所以想想一个诺基亚,都是沉淀了无数智慧的结晶,再次向前人致敬。

这次我就想讲到这里,这些都是辛苦一字字敲出来的,如有不对,欢迎留言。接下来可能想讲一下大一点的方向,网络如何建立连接,讲一下互联网的一些流行协议,以及如何构建了今天这个高信息互联网。