目录

1、二进制

2、布尔逻辑

3、NOT

4、AND

5、OR

6、XOR


今天我们开始讲"抽象",不用管底层细节,把精力用来构建更复杂的系统。

1、二进制

上一讲,我们讲了计算机最早是机电设备,一般用十进制计数——比如用齿轮数来代表十进制,再到晶体管计算机。幸运的是,只用 开/关 两种状态也可以代表信息,这叫 二进制——意思是"用两种状态表示"。就像自行车有两个轮,双足动物有两条腿,你可能觉得两种状态不多,你是对的!但如果只需要表示 true 和 false,两个值就够了。电路闭合,电流流过,代表 "真";电路断开,无电流流过,代表"假",二进制也可以写成 1 和 0 而不是 true 和 false——只是不同的表达方式罢了——我们下一讲会讲更多细节。

晶体管的确可以不只是 开/关,还可以让不同大小的电流通过,一些早期电子计算机是三进制的,有 3 种状态,甚至五进制,5 种状态。问题是,状态越多,越难区分信号——如果手机快没电了或者附近有电噪音,因为有人在用微波炉,信号可能会混在一起...

而每秒百万次变化的晶体管会让这个问题变得更糟!所以我们把两种信号尽可能分开——只用"开"和"关"两种状态,可以尽可能减少这类问题。

2、布尔逻辑

计算机用二进制的另一个原因是有一整个数学分支存在,专门处理"真"和"假",它已经解决了所有法则和运算,叫"布尔代数"!乔治·布尔(George Boole)是布尔二字的由来,是一位 19 世纪自学成才的英国数学家,他有兴趣用数学式子 扩展亚里士多德基于哲学的逻辑方法。布尔用 逻辑方程 系统而正式的证明真理(truth)。他在 1847 年的第一本书"逻辑的数学分析"中介绍过,在"常规"代数里 - 你在高中学的那种 - 变量的值是数字,可以进行加法或乘法之类的操作。

但在布尔代数中,变量的值是 true 和 false,\N 能进行逻辑操作。布尔代数中有三个基本操作:NOT, AND 和 OR,这些操作非常有用,我们一个个来看:

NOT 操作把布尔值反转,\N把 true 进行 NOT 就会变成 false,反之亦然,我们可以根据 NOT 操作的输入和输出,做出这个表.

”NOT“表
INPUT OUTPUT
TRUE FALSE
FALSE TURE

酷的地方是 - 用晶体管可以轻松实现这个逻辑。上一讲说过,晶体管只是电控制的开关,有 3 根线:2 根电极和 1 根控制线,控制线通电时,电流就可以从一个电极流到另一个电极,就像水龙头一样- 打开水龙头,就有水流出来,关掉水龙头,就没水了。

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

真值表
INPUT OUTPUT
TRUE TRUE
FALSE FALSE

3、NOT

这个电路没什么意思,因为它没做什么事——输入和输出是一样的。但我们可以稍加修改,实现 NOT。与其把下面那根线当做 输出,我们可以把 输出 放到上面,如果打开 输入,电流可以流过然后 "接地",输出就没有电流,所以输出是 off。如果用水来举例,就像家里的水都从一个大管子流走了,打开淋浴头一点水也没有。

如果输入是 on,输出是 off,

输入on,输出off

当输入是 off,电流没法接地,就流过了输出,所以输出是 on;

输入off,输出on

和 NOT 操作表一样!太棒了!我们做了个有点用的电路!我们叫它 "NOT 门" \N ,之所以叫 "门",是因为它能控制电流的路径。

4、AND

"AND"操作有 2 个输入,1 个输出,如果 2 个输入都是 true,输出才是 true。你可以想成是 说真话,如果完全不说谎,才是诚实。举例,看如下这个句子,我叫 Carrie Anne "而且"我穿着蓝色的衣服,2 个都是真的,所以整个是真的。

但如果说,我叫 Carrie Anne"而且"我穿了裤子, 就是假的,因为我没穿裤子。

虽然前半句是真的,但是 真 "AND" 假,还是假,就算把前后顺序反过来,也依然是 假。如果我说 2 个假的事情,那么结果是假。和上次一样,可以给"AND"做个表

”AND“表
INPUT A INPUT B OUTPUT
TRUE TRUE TRUE
TRUE FALSE FALSE
FALSE TRUE FLASE
FALSE FALSE FALSE

为了实现 "AND 门",我们需要 2 个晶体管连在一起,这样有 2 个输入和 1 个输出。

"AND"门的晶体管实现

如果只打开 A,不打开 B \N 电流无法流到 output,所以输出是 false,如果只打开 B,不打开 A ,也一样,电流无法流到 output,只有 A 和 B 都打开了,output 才有电流。

5、OR

最后一个是 OR (前面讲了 NOT 和 AND),只要 2 个输入里,其中 1 个是 true,输出就是 true。

”OR"表
INPUT A INPUT B OUTPUT
TRUE TRUE TRUE
TRUE FALSE TRUE
FALSE TRUE TRUE
FALSE FALSE FALSE

比如,我叫 Margaret Hamilton"或"我穿着蓝色衣服,结果是 true,虽然我不是 Margaret Hamilton,但是我穿着蓝色衣服,所以结果是 true。

对于"OR 操作"来说,\N如果 2 个 输入都是 true,输出也是 true,只有 2 个输入都是 false,OR 的结果才是 false。

"AND"门的晶体管实现

实现 "OR 门" 除了晶体管还要额外的线,不是串联起来,而是并联。然后左边这条线有电流输入

我们用"小拱门"代表 2 条线没连在一起,只是跨过而已,虽然看起来像连在一起,如果 A 和 B 都是 off,电流无法流过,所以输出是 off;如果打开 A,电流可以流过。输出是 on,如果只打开 B 也一样,只要 A OR B 是 on, 输出就是 on,如果 A 和 B 都 on,结果是 on。

好,现在 NOT 门, AND 门, OR 门 都搞定了。我们可以进行一次抽象,NOT 门的画法是三角形前面一个圆点,

AND 门用 D 表示 ,

OR 门用太空船表示,

"D 形状和太空船"不是标准叫法, 只是我喜欢这样叫而已。我们可以用这种方法表示它们,构建更大的组件,就不会变得很复杂——晶体管和电线依然在那里,我们只是用符号来代表而已。

6、XOR

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

”XOR“表
INPUT A INPUT B OUTPUT
TRUE TRUE FALSE
TRUE FALSE TRUE
FALSE TRUE TRUE
FALSE FALSE FALSE

XOR 就像普通 OR,但有一个区别:如果 2 个输入都是 true,XOR 输出 false。想要 XOR 输出 true \N 一个输入必须是 true,另一个必须是 false,就像你出去吃晚饭,你点的饭要么配沙拉,要么配汤——你不能两个都要!

用晶体管实现 XOR 门有点烧脑子,但我可以展示一下\N 怎么用前面提到的 3 种门来做 XOR 门。

晶体管实现”XOR“门

我们有 2 个输入,A 和 B ,还有 1 个输出.,我们先放一个 OR 门. 因为 OR 和 XOR 的逻辑表很像,只有 1 个问题 - 当 A 和 B 都是 true 时 \N OR 的输出和想要的 XOR 输出不一样,我们想要 false。XOR 超有用的,我们下次再说它。因为超有用,\N 工程师给了它一个符号,一个 OR 门 + 一个笑脸,重要的是,现在可以把 XOR 放入"工具箱"了,不用担心 XOR 具体用了几个门,这几个门又是怎么用晶体管拼的,或电子是怎么流过半导体的,再次向上抽象。

工程师设计处理器时,很少在晶体管的层面上思考,而是用更大的组件,比如逻辑门,或者由逻辑门组成的更大组件,我们以后会讲。就算是专业程序员,也不用考虑逻辑是怎样在物理层面实现的。

我们从电信号开始,到现在第一次表示数据——真和假 - 开始有点"计算"的感觉了。仅用这一讲讲的 逻辑门,我们可以判断复杂的语句 比如:[如果是 John Green] AND [下午 5 点后] \N OR [周末] AND [在比萨店附近]。那么 "John 想要比萨" = 真

计算机科学第三讲——布尔逻辑和逻辑门相关推荐

  1. 逻辑代数01律的理解_零基础学习计算机原理:布尔逻辑和逻辑门

    Hello World!我是老乔,欢迎来到超智星球.在这里,每篇都学一个小知识. 微号:超智星球 网站:http://chaozhixingqiu.com 这期呢,还是计算机原理系列,上期最后讲到了自 ...

  2. 【计科快速入门】 三、布尔逻辑和逻辑门

    1. 布尔逻辑 乔治·布尔( George Boole)是布尔二字的由来,是一位19世纪自学成才的英国数学家,他有兴趣用数学式子,扩展亚里士多德基于哲学的逻辑方法,布尔用逻辑方程系统而正式的证明真理( ...

  3. 计算机速成课 第三集 布尔逻辑和逻辑门

    1. 计算机最早是机电设备,一般使用十进制计数 例如:用齿轮来代表十进制. 2. 再到晶体管计算机,只用「开 / 关」两种状态也可以代表信息,我们称之为「二进制」,意思是「用两种状态表示」 例如:自行 ...

  4. 计算机科学速成课 Crash Course Computer Science 笔记(摘要形式)

    Crash Course Computer Science总共40节课,架构式地详细介绍了计算机从底层到顶层的构造和新的技术,一节课十分钟左右,可让小白在很短时间内产生对计算机的总体理解 本文是听课后 ...

  5. 逻辑门与ALU基本原理

    逻辑门与ALU基本原理 一.布尔逻辑和逻辑门 二.ALU基本原理 2.1 算术单元:半加器 2.2 算术单元:全加器 2.3 算术单元:8位加法器 2.4 逻辑单元 2.5 ALU 三.参考资料 一. ...

  6. 计算机科学速成课笔记(详解)

    课程链接: https://www.bilibili.com/video/av2 1 376839?p=3 第一章.计算机发展和历史 1.1计算机实质 计算机都是由一些简单的组件,靠一层层抽象做出来的 ...

  7. 「计算机科学速成课」笔记

    课程链接: https://www.bilibili.com/video/BV1EW411u7th 第一课 计算机早期历史 1. 计算机的实质 极其简单的组件,通过一层层的抽象,来做出复杂的操作. 2 ...

  8. 【计算机基础】-2万字总结《计算机速成课》全集笔记

    前言 视频链接地址: [[计算机科学速成课][40集全/精校] - Crash Course Computer Science-哔哩哔哩]https://b23.tv/a33Kwq 视频的意义 能看到 ...

  9. 有哪些高质量的自学网站?

    分享32个鲜为人知并且完全免费的高质量自学网站,每个都是堪称神器,让你相见恨晚. 1:Oeasy 是一个完全免费的综合视频教程网站,非常良心实用. 它提供的视频教程非常丰富并且质量很高,包括:PS 教 ...

最新文章

  1. 移动机器人定位导航方式的演进
  2. 【数据结构与算法】之有序数组中的单一元素的算法
  3. 20分钟快速了解Redis
  4. java 某个字符在字符串中出现的所有位置_Java面试常考核心概念
  5. opencv在vs2012下重编译详细教程——解决按f11进入不了源代码
  6. php之快速入门学习-9(switch)
  7. 演示unity内存管理机制的缺陷
  8. API接口应该如何设计?
  9. 将ubuntu引导项加入windowsXP启动菜单中
  10. 汉罗塔python_基于Python的汉诺塔算法
  11. linux dump备份svn,svnadmin dump+load库中的某个目录用svndumpfilter 可实现
  12. vue点击按钮跳转路由
  13. iOS 获取设备UDID
  14. 打开计算机 显示不支持此接口,新装的电脑系统,打开图片提示不支持此接口!怎么解决!...
  15. IP协议详解【IP报文头部结构、IP分片、IP路由、IP转发】
  16. BUAA-2021春-数据结构-综合作业-文本摘要生成(Hash实现 + SIMD优化 终测最速)
  17. 关于MAC下的SSH工具的推荐及SSH如何连接本地的小教程
  18. 网易实习面经——网易云音乐
  19. Hbase的JavaAPI
  20. 树莓派3B+控制LCD1602显示英文或数字

热门文章

  1. 定积分的基本性质5 区间可加性
  2. [人工智能-深度学习-46]:FineTuning(微调)、Transfer Trainning(迁移学习)的理论基础与深度解析
  3. wireshark学习笔记(MAC地址欺骗)
  4. java 文字转图片且居中
  5. SSL证书的申请流程
  6. 0.前言 与 Eigen库的使用整理
  7. 内涵外延发生巨变的嵌入式技术,未来如何发展?
  8. 报错 | error ‘App‘ is not defined no-undef
  9. 常用路由协议的分析及比较/RIP/IGRP/OSPF/BGP
  10. 三毛经典人生励志语录