逻辑门--计算之始!

目录

逻辑门:

--------- " 抽象 " 之旅:

二进制:

不用管底层细节,把精力用来构建更复杂的系统:

  计算机最早是机电设备 , 一般用十进制计数 

  比如用齿轮数来代表十进制 --》 再到晶体管计算机
    
  二进制: 用 开/关 两种状态也可以代表信息
          意思是"用两种状态表示

  二进制也可以写成 1 和 0 而不是 true 和 false(不同的表达方式)

    表示 true  : 电路闭合,电流流过,代表 "真"
    表示 false : 电路断开,无电流流过,代表"假"

晶体管的确可以不只是 开/关,还可以让不同大小的电流通过

早期电子计算机是三进制的,有 3 种状态,甚至五进制,5 种状态

--》 问题:状态越多,越难区分信号???
      如: 手机快没电了或者附近有电噪音,用微波炉,信号可能会混在一起 ....
    每秒百万次变化的晶体管会让这个问题变得更糟!

布尔代数:

思路:
--> 把两种信号尽可能分开,只用"开"和"关"两种状态,可以尽可能减少这类问题

计算机用二进制的另一个原因是: 
    有一整个数学分支存在,专门处理"真"和"假",已经解决了所有法则和运算
                                            -----》"布尔代数"
        
布尔代数: 在布尔代数中,变量的值是 true 和 false,\N 能进行逻辑操作,
         有三个基本操作:NOT, AND 和 OR

        NOT 操作把布尔值反转,
        \N把 true 进行 NOT 就会变成 false,反之亦然 
        根据 NOT 操作的输入和输出,做出这个表,并且用晶体管可以轻松实现这个逻辑  

晶体管只是电控制的开关, 有 3 根线:2 根电极和 1 根控制线:
        控制线通电时,电流就可以从一个电极流到另一个电极(如:打开水龙头,就有水流出来,)

        可以把控制线,当做输入 ( input ), \N 底部的电极,当做输出(output)
     即: 1 个晶体管,有一个输入和一个输出;
         如果我们打开输入(input on) \N 输出也会打开(output on) \N 因为电流可以流过
        如果关闭输入(input off) \N 输出也会关闭(output off)\N 因为电流无法通过
        
        或者用布尔术语来说\N 输入为 真,输出为 真 
                        输入为 假 \N 输出为 假     --》"真值表"

---》问题: 电路没什么意思,因为它没做什么事?,输入和输出是一样的....

电路 "NOT | AND | OR 三 门" :

思路 : 对其上稍加修改,实现 NOT
       与其把下面那根线当做 输出,我们可以把 输出 放到上面,
    
电路 "NOT 门":
    如果打开 输入,电流可以流过然后 "接地",输出就没有电流,所以输出是 off

    --》 如果用水来举例,就像家里的水都从一个大管子流走了,打开淋浴头一点水也没有    

    如果输入是 on,输出是 off,当输入是 off,电流没法接地,就流过了输出,所以输出是 on
    当输入是 off,电流没法接地,就流过了输出,所以输出是 on ---》 和 NOT 操作表一样

    电路 "NOT 门", \N 之所以叫 "门",是因为它能控制电流的路径

"AND 门":
    "AND"操作有 2 个输入,1 个输出:
     如果 2 个输入都是 true,输出才是 true
        
     即:只打开 A,不打开 B \N 电流无法流到 output,所以输出是 false,只有 A 和 B 都打开            了,output 才有电流

    
"OR 门":
    只要 2 个输入里,其中 1 个是 true,输出就是 true,
    \N如果 2 个 输入都是 true,输出也是 true
    只有 2 个输入都是 false,OR 的结果才是 false
    
    实现 "OR 门" 除了晶体管还要额外的线 (不是串联起来。而是并联!!!)
    如果 A 和 B 都是 off,电流无法流过,输出是 off
    如果打开 A,电流可以流过。输出是 on

XOR 异或门:

NOT 门的画法是三角形前面一个圆点 : 

AND 门用 D 表示 ,OR 门用太空船表示 (形象表示)

晶体管和电线依然在那里,我们只是用符号来代表而已:
            用上述方法表示它们,构建更大的组件

除了前面说的三个\N 另一个有用的布尔操作叫 "异或"  : 简称 XOR

XOR 就像普通 OR,但有一个区别:
    如果 2 个输入都是 true,XOR 输出 false
    想要 XOR 输出 true \N 一个输入必须是 true,另一个必须是 false

XOR 门 : 
    有 2 个输入,A 和 B ,还有 1 个输出.
    先放一个 OR 门. 因为 OR 和 XOR 的逻辑表很像,
    只有 1 个问题 - 当 A 和 B 都是 true 时 \N OR 的输出和想要的 XOR 输出不一样
    ----》得到 false

\N 工程师给了它一个符号,一个 OR 门 + 一个笑脸  : XOR 门图像表示

--》可以把 XOR 放入"工具箱" , 不用担心 XOR 具体用了几个门 ,怎么用晶体管拼的,
                           或电子是怎么流过半导体的

工程师设计处理器时,很少在晶体管的层面上思考,--用更大的组件,比如逻辑门,或者由逻辑门组成的更大组件,

专业程序员 也不用考虑逻辑是怎样在物理层面实现的 从电信号开始,到现在第一次表示数据

-----》真和假 - 开始有点"计算"的感觉了!!!!!

计算之始:

逻辑门 :  可以判断复杂的语句
         比如: [如果是 John Green] AND [下午 5 点后] \N OR [周末] AND [在比萨店附近]
               那么 "John 想要比萨" = 真,

        And with that, I'm starving, I'll see you next week.
        都说饿了,下周见

猜你喜欢

转载自www.cnblogs.com/shaozheng/p/12093725.html