zoukankan      html  css  js  c++  java
  • 逻辑门--计算之始!

    逻辑门:

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

    二进制:

    不用管底层细节,把精力用来构建更复杂的系统:
    
      计算机最早是机电设备 , 一般用十进制计数 
    
      比如用齿轮数来代表十进制 --》 再到晶体管计算机
        
      二进制: 用 开/关 两种状态也可以代表信息
    	      意思是"用两种状态表示
    
      二进制也可以写成 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.
    		都说饿了,下周见
    
  • 相关阅读:
    Hibernate+mysql 中文问题解决方案.
    FpSpread表格控件,FpSpread事件介绍(一)
    如何实现打开有宏的EXCEL时不提示
    使用VB.Net写一个简单的数据访问层(不能称ORM):CRUD操作
    Asp.NET 时间Since转换
    64位操作系统上。NET操作MSMQ的问题
    IIS7配置管理Windows2008 64位系统IIS7的问题
    数据库开发批量附加数据库
    IIS7中对静态文件的处理
    techsailor三步曲
  • 原文地址:https://www.cnblogs.com/shaozheng/p/12093725.html
Copyright © 2011-2022 走看看