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

【读书笔记】《编码:隐匿在计算机软硬件背后的语言》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同线路中的开关串联及并联关联到一起”,但我们居然做到了,这也太有趣了!


http://www.xdnf.cn/news/5232.html

相关文章:

  • Android方法耗时监控插件开发
  • Java 基础面试题
  • 自定义类型-结构体(一)
  • 【Rust】枚举和模式匹配
  • 2025年数维杯赛题C题专家 组委会C题专家疑集锦
  • 5.8线性动态规划2
  • SpringMVC-执行流程
  • 40、C# 数组、链表、哈希、队列、栈数据结构的特点、优点和缺点
  • AI:生成对抗网络(GAN)
  • 【Vue】vuex的getters mapState mapGetters mapMutations mapActions的使用
  • yocto的大致工作流程
  • CSS渲染性能优化
  • MySQL进阶篇2_SQL优化、锁
  • 探索 JWT(JSON Web Token):原理、结构与实践应用对比
  • RK3568-OpenHarmony(1) : OpenHarmony 5.1的编译
  • C# 使用 WinUI 3 项目模板创建桌面应用程序
  • 在 Kubernetes 中使用 Docker 实现 GPU 支持的完整方案
  • Ubuntu 与 Windows 双系统环境下 NTFS 分区挂载教程
  • 添加物体.
  • 2025年5月15日前 免费考试了! Oracle AI 矢量搜索专业​​认证
  • 用jsp简单实现C语言标准化测试系统
  • (2025)图文解锁RAG从原理到实操
  • DeepSeek:开启物流行业创新变革新时代
  • 高效Python开发:uv包管理器全面解析
  • LeetCode热题100 两数之和
  • SAN 对抗网络搜索,搜索—智能编程—仙盟创梦IDE
  • 手机银行怎么打印流水账单(已解决)
  • vue访问后端接口,实现用户注册
  • MySQL 中 count(*)、count(1) 和 count(字段名) 有什么区别?
  • 居然智家亮相全零售AI火花大会 AI大模型赋能家居新零售的进阶之路