当前位置: 首页 > news >正文

【读书笔记】《编码:隐匿在计算机软硬件背后的语言》01 逻辑与开关

【读书笔记】《编码:隐匿在计算机软硬件背后的语言》01 逻辑与开关

  • 前言
  • 01 逻辑与开关

前言

  我是一名光学工程专业研二的学生,目前正处于找工作的阶段,根据往年师兄师姐找工作的情况,在西安这个城市不出意外我能找到的应该就是嵌入式岗位了,所以我开始想办法提升自己在这方面的知识水平,以此来应对八九月份的秋招。本科阶段我学过模电、数电、微机原理、单片机等基础课,但本科阶段懂得都懂,只要不挂科就行,所以对嵌入式这方面的知识也只停留在表面,比如问我什么是CPU、寄存器等等和计算机相关的问题,我一时半会儿还真的回答不上来。
  于是,我开始学习计算机相关的知识,在机缘巧合下我读到了这本书,这本书没有晦涩难懂的专业术语,作者用丰富的想象和清晰的语言表达将计算机的发展过程和原理一步步展现在我的面前,通过通俗易懂的方式,从基础的编码概念逐步深入到计算机的软硬件原理,这让我在阅读过程中逐渐把本科阶段乃至高中物理学到的一些知识串联在一起,让我受益匪浅,所以我忍不住想记录一下里面引发我思考的精彩内容,这也算是我做的一个读书笔记,让我以后也能方便直观的回顾。

01 逻辑与开关

  前几章通过摩斯电码、布莱叶盲文、继电器等实例,引入了二进制数和用继电器充当开关的概念,即二进制数1和0分别对应开关的打开和关闭的状态。这里我们就不写前几章的内容了,主要写让我觉得好玩的部分。
  这一部分作者先引入了布尔代数的知识:通常用字母来表示具体的物体(类/集合),然后对这些具体的类进行逻辑运算。

  举个例子:
  我们可以用M代表公猫,F代表母猫,T可以代表褐色的猫,B可以代表黑猫,W代表白猫,O代表不在T、B或W集合中的其他颜色的猫,字母N来表示已被绝育的猫,字母U表示未被绝育的猫。这些字母用来表示有特定特征的猫的群体。

  布尔代数中,有时用符号“∪”(并集)和“∩”(交集)来代替“+”和“×”(在概率论中我也学过)。这里我们能复习一个知识就是“或”(or)=并 (+)、“和”(and)=交(×)
  显然通过 M + F = T + B + W + O = N + U = 1 M+F=T+B+W+O=N+U=1 M+F=T+B+W+O=N+U=1可以表示所有猫的集合。

  特别注意的是:传统代数的交换律、结合律和分配律在布尔代数中同样成立。而且在布尔代数中,加法还可以来分配乘法,但在传统的代数中,这是不成立的:
W + ( B × F ) = ( W + B ) × ( W + F ) W+(B×F)=(W+B)×(W+F) W+(B×F)=(W+B)×(W+F)
白猫和黑色母猫的并集=白猫和黑猫的并集和白猫和母猫的并集。


  如果我们去宠物店买猫,要求:“一只公猫,已绝育的,白色或褐色都可以,或者一只母猫,也要是已绝育的,除了白色任何颜色都可以;或者,只要是黑猫“就可以用以下公式表示:

( M × N × ( W + T ) ) + ( F × N × ( 1 − W ) ) + B (M×N×(W+T))+(F×N×(1-W))+B (M×N×(W+T))+(F×N×(1W))+B

  用公式表达的好处是,我们就可以做一个布尔测试了。为了避免麻烦,这里,字母可以用数字来赋值。我们只用数字0和1。数字1代表YES, True,即这只猫是符合这样的标准的。数字0表示NO, False,即这只猫不符合这种特定标准。

  如果店员拿了一只未绝育的褐色公猫,替换后的公式: ( 1 × 0 × ( 0 + 1 ) ) + ( 0 × 0 × ( 1 − 0 ) ) + 0 = 0 (1×0×(0+1))+(0×0×(1-0))+0=0 (1×0×(0+1))+(0×0×(10))+0=0,因此这只猫不符合要求。
  店员随后拿出了一只已绝育的灰色母猫,替换后的公式: ( 0 × 1 × ( 0 + 0 ) + ( 1 × 1 × ( 1 − 0 ) ) + 0 = 1 (0×1×(0+0)+(1×1×(1-0))+0=1 (0×1×(0+0)+(1×1×(10))+0=1,这说明这只小猫符合咱们的要求可以带回家了!

  值得注意的是,我们刚刚的一系列做法把我们的抽象文字用具体的公式和数字表达出来了,但这样做每次我们还需要代入数字0和1计算最终结果,还是不够直观。

  有没有什么方法可以直观展示结果呢?
  这时我们突发奇想,是否可以通过连通开关和灯泡的方法来确定某类猫咪是否符合我们的标准呢?


  让我们尝试设计一个帮助顾客挑选心仪猫咪的电路吧!
  在初中物理课,我们学过串联电路和并联电路,我们可以说0代表“开关断开”​,1代表“开关闭合”​,一个灯泡有两种状态,0代表“灯泡不亮”​,1代表“灯泡亮”​。我们可以用真值表表示灯泡的亮灭与开关的关系。

  两个开关串联相当于布尔代数中的AND运算。
在这里插入图片描述
  两个开关并联相当于布尔代数中的OR运算。
在这里插入图片描述

结合上面初中的物理知识(“和”(and)=交(×)=串联、“或”(or)=并 (+)=并联),如下图所示,刚刚我们对于猫咪的要求就可以用电源、开关和灯泡来做一个电路了:

“一只公猫,已绝育的,白色或褐色都可以,或者一只母猫,也要是已绝育的,除了白色任何颜色都可以;或者,只要是黑猫” ( M × N × ( W + T ) ) + ( F × N × ( 1 − W ) ) + B (M×N×(W+T))+(F×N×(1-W))+B (M×N×(W+T))+(F×N×(1W))+B
在这里插入图片描述
此时如果店员拿出一只已绝育的灰色母猫,我们只需要闭合和打开对应的开关。
在这里插入图片描述
灯泡被成功点亮了,表明这只猫符合顾客的全部要求。

作者在这章最后说到:“然而,在19世纪,没有人将布尔代数中的AND和OR同线路中的开关串联及并联关联到一起”,但我们居然做到了,这也太有趣了!


相关文章:

  • 【单片机毕业设计16-基于stm32c8t6的智慧交通灯系统设计】
  • 湖南(源点咨询)市场调研 商业综合体定位调研分享(下篇)
  • Spring Boot 中如何启用 MongoDB 事务
  • 华为云服务器核心用途全景解析:从基础服务到行业革新​​
  • # 深度学习实操 附录B 深入解析 tensorflow 自动微分
  • 【Python】装饰器在装什么
  • 递归函数(斐波那契数列0,1,1,2,3,5,8,13,21,34,55...)
  • 运放OP方向技术要点和大厂题目解析
  • LWIP的IP协议笔记
  • Java中的代理机制
  • STC32G12K128程序大于64KB使用128KB用户EEPROM设置
  • JavaWeb基础
  • 438. 找到字符串中所有字母异位词(滑动窗口)
  • Android方法耗时监控插件开发
  • vue3项目中CodeMirror的复杂用法,实现自定义语法模式,手动在指定光标位置插入/获取/替换/绑定文本
  • 当可视化遇上 CesiumJS:突破传统,打造前沿生产配套方案
  • CentOS7.9部署FunASR实时语音识别接口 | 部署商用级别实时语音识别接口FunASR
  • 线程安全 1_线程安全
  • Java Bean容器详解:核心功能与最佳使用实践
  • 关于单片机的基础知识(一)
  • 领证不用户口本,还需哪些材料?补领证件如何操作?七问七答
  • 比特币价格重返10万美元,哪些因素使然?
  • 人民财评:网售“婴儿高跟鞋”?不能让畸形审美侵蚀孩子身心
  • 美联储如期按兵不动,强调“失业率和通胀上升的风险均已上升”(声明全文)
  • 蓝佛安:中方将采取更加积极有为的宏观政策,有信心实现2025年的5%左右增长目标
  • 网友建议平顶山请刘昊然任旅游宣传大使,市委:有此设想,正申请经费