zoukankan      html  css  js  c++  java
  • 简单电路中的逻辑学(一)

    注:本文中的部分内容改编自 [美]Charles Petzold《CODE》

    众所周知,逻辑学是数学所衍生出的一门拥有重大意义的科学,我们在高中数学课中结合着集合的概念学习了基础的逻辑学知识,学会了用Venn表示集合以及“¬”“∪”“∩”“⊇”等逻辑符号的使用。但大家有没有想过,当数学书上的逻辑知识和物理题中的电路图像相结合,会发生什么有趣的事情呢?

    在展示出电路图象之前,我们先回顾一下我们已学过的逻辑知识:

    设P、R为两集合,U为全集,则P和R的关系可以用如下Venn图表示:

    再看一个复杂一点的例子:

    设P、Q、R为两两又交的三个集合,U为全集(如下图)

    Venn图中的白色区域表示A集合,

    求A集合用P、Q、R及逻辑符号连接的表现形式。

    首先观察有图中白色区域与蓝色区域所构成的集合的并集为全集U,故A集合可以表示为 ¬ (蓝色区域表示的集合)。
    而蓝色区域表示的集合为集合P、Q、R的交集,及可以表示为P∩Q∩R,进而A集合可以表示为¬(P∩Q∩R)。

    然而这个式子看起来比较奇怪,我们希望使用更加“数学”的方式表示A集合,于是我们现在引入一种新的集合表示形式。

    通过观察上面的表格,我们可以发现在逻辑学上,∪和+,∩和×,¬和1-x可以表示相同的意义。于是,我们又可以把集合A表示为 1-( P× Q × R )。

    (值得注意的是,逻辑学上的真值和加值如用0和1表示则会丢失数学上的一些运算规则,如1+1=1,这是和传统代数计算方法不同的。)

    有了集合A的这种表达式,我们便可以用数字运算判定某区域代表的集合是否是A集合的子集。

    例如,浅蓝色部分表示的区域,在集合P对应的区域内,但不在集合Q、R对应的区域内,于是:

    即该浅蓝色区域对应的集合是A集合的子集。

    学习了上面的前置知识,我们就可以把逻辑形式和物理电路拟合了。

    我们首先可以用开关S表示当前对象是否在集合S内,用灯泡L是否亮表示运算的结果,这个概念并不难理解,让我们再看看交集和并集与物理电路拟合的例子:
    设A为当前正在检测的集合。

    看到这里,你也许会觉得作者是个神经病,明明是很简单的东西非要搞出这么多表示形式,于是你关闭了网页并走进了一家水产店,琳琅满目的海鲜唤起了你对逻辑学的热爱之情,于是你对老板说道:我想要一只公海星,已绝育的,棕色的或者黄色的;或者一只母海星,已绝育的,除黑色外的其他颜色都可以;或者,只要是一只绿色海星就可以。

    为了方便列式,聪明的你决定用字母来表示所寻海星的状态:

    公:M   母:W   已绝育:T   棕色:R   黄色:Y   黑色:B   绿色:G
    

    你的要求被总结为下列表示式 ( T ∩ M ∩ ( R ∪ Y ) ) ∪ ( T ∩ W ∩ ( ¬ B ) ) ∪ G

    或者:( T × M × ( R + Y ) )+ ( T × W × ( 1 - B ) ) + G

    你同样也可以用一个由开关和电池组成的电路来表示,如下图所示:

    这样的电路有时被称为网络(Network),而如今这个词更多地用来描述计算机之间的连接,而不仅指多个开关的集合。

    因此,计算机电子工程师可以运用布尔代数的工具去设计开关电路。此外,如果你简化了一个描述网络的布尔表达式,那么你也可以简化相应网络。

    上式:( T × M × ( R + Y ) )+ ( T × W × ( 1 – B ) ) + G

    利用布尔运算符的分配律,表达式可以写成仅有一个T的形式:

    ( T × ( ( M ×( R + Y ) )+ ( W × ( 1 – B ) ) ) ) + G

    由于括号太多,这个表达式看起来并不简单,但是这个表达式中少了一个变量,也就意味着网络电路中少了一个开关,以下就是简化后的电路图。

    确实,简化后的电路可以证明同样效果的电路可以由不同的逻辑结构进行等效,这也就给计算机硬件材料的进化提供的理论基础。

    但理论上来说,你(客户)只需要四个开关就可以决定心目中的海星(不考虑海星都是雌雄同体的这一事实),那么如何实现?

  • 相关阅读:
    关于Log和adb知识
    关于read only file system问题解决方案
    关于Android开发手机连接不上电脑问题解决方案
    Binder的设计和框架
    vi/vim基本使用方法
    利用ssh传输文件
    由tombstone文件解析jni代码过程
    关于调用系统camera和自己动手写camera
    补之前 如何改变jupyter打开文件的路径
    python logging模块
  • 原文地址:https://www.cnblogs.com/zhwer/p/11761211.html
Copyright © 2011-2022 走看看