zoukankan      html  css  js  c++  java
  • 第3集 布尔逻辑和逻辑门

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

    例如:用齿轮来代表十进制。
    

    2. 再到晶体管计算机,只用「开 / 关」两种状态也可以代表信息,我们称之为「二进制」,意思是「用两种状态表示」

    例如:自行车有两个轮子,双足动物有两条腿,
    * 不同的是,晶体管可以不只是「开/关」,还可以让不同大小的电流通过。
    

    3. 为什么一定要用二进制?除了二进制,还可以有更多种的状态吗?

    * 也许你可能觉得两种状态不多,确实是这样。但如果只需要表示 true 和 false,两个值就够了。
    
    * 二进制也可以写成 0 和 1 ,而不是 true 或 false,这些只是不同的表达方式。
    
    * 一些早期电子计算机是三进制的,有 3 种状态,还有五进制,5 种状态。
    
    * 问题是:状态越多,越难区分信号。
        举例:如果手机快没电了,或者附近有电噪音,因为有人在用微波炉,信号可能会混在一起,而每秒变化百万次的晶体管会让这个问题变得更糟
        所以,尽可能将两种信号分开,只用「开」和「关」两种状态,来尽可能减少这类问题
    

    4. 计算机使用二进制的另一个原因:

    * 有一整个数学分支叫「布尔代数」存在,专门处理「真」和「假」,解决了所有法则和运算,在布尔代数中,变量的值是 true 和 false, 能进行逻辑操作。
    
    * 「乔治·布尔」是「布尔」二字的由来,是一位 19 世纪,自学成才的英国数学家。他有兴趣用数学公式来扩展亚里士多德基于哲学的逻辑方法,用「逻辑方程」系统而正式的证明真理。
        1847年,第一本书「逻辑的数学分析」中介绍过,在「常规」代数里(在高中学的那种),变量的值是数字,可以进行加法或乘法之类的操作。
        但在布尔代数中,变量的值是 true 和 false,能进行逻辑操作。
    
    * 布尔代数有3个基本操作:
        1)NOT:反转布尔值,也叫做“NOT门” 。叫“门”,是因为它可以控制电流的路径,可以把控制线,当作输入;底部的电极,当作输出。
        2)AND :门,串联,必须有两条通路。
        3)OR:门,并联,有一条电路通即可。
            * 现在我们可以进行一次抽象:晶体管和电线依然在那里,我们只是用符号来代表而已。
        4)异或,简称 XOR。
            * XOR 就像普通的 OR, 但是有一个区别:如果两个输入都是 true, XOR 输出 false; 如果想要 XOR 输出 true, 一个输入必须是 true, 另一个输入必须是 false。
            * XOR 非常有用,工程师给了它一个符号,一个 OR 门 + 一个笑脸。
            * 现在可以把 XOR 放入「工具箱」了,不用担心 XOR 具体用了几个门,这几个门又是怎么用晶体管拼的,或电子是怎么流过半导体的。
            * 再次向上抽象:
                1 工程师在设计处理器时,很少在晶体管的层面上思考,而是用更大的组件,比如逻辑门,或者由逻辑门组成的更大组件;
                2 就算是专业程序员,也不用考虑逻辑是怎样在物理层面实现的。
    

    5. 总结

    从电信号开始,到现在第一次表示数据,开始有点「计算」的感觉了。仅用这集讲的「逻辑门」,我们可以判断复杂的语句。
        * 举例:[如果是 John Green] AND [下午 5 点后] OR [周末] AND [在比萨店附近],那么[John 想要比萨] = 真
  • 相关阅读:
    Python——文件操作2
    Python——文件操作1
    Python——集合
    Springboot @Transactional捕获异常事务回滚
    elasticsearch5.2 高亮java代码
    Java static作用
    elasticsearch6.3 自动补齐suggest java代码
    spring boot通过官网创建新项目
    eclipse web工程不能 修改build path
    linux虚拟机添加网卡
  • 原文地址:https://www.cnblogs.com/zxxsteven/p/14888949.html
Copyright © 2011-2022 走看看