Charles Petzold《Code》----2017.1.6 读10章(非常精彩!)

注:所有笔记均为自己的理解总结,可能并非书本原文,对错不予负责。

摘要:逻辑最基本的目标是证明某个语句是否正确。逻辑是追寻真理的过程中用于分析语言的一种手段。本章主要讲述了如何用数学(布尔代数)来演算逻辑,然后再进一步讲述了如何用电路来演绎布尔代数。非常精彩!

引言:我们在现实生活中经常需要进行逻辑判断,可能是通过条件推断出某种结论,可能是判断一些事物是否满足一定的标准。比如下面两个例子:
例一:通过前两个条件可以推断出第三个条件:
条件1:所有人都是要死的;
条件2:苏格拉底是人;
条件3:苏格拉底是要死的。
例二:你进宠物店说需要这样一只猫“一只阉过的公猫,白的或黄褐色的均可;或者要一只没有生殖能力的母猫,除了白色,其他任何颜色均可;或者只要是只黑猫,我也要”。如果店员给你拿来一只未阉过的黄褐色的公猫,那这只猫是你想要的吗?
以上两个例子我们都可以通过大脑的逻辑判断来解决问题。但本章介绍了如何用数学通过在纸上演算来解决!还介绍了如何用电路来帮你自动解决!


布尔代数:

历史背景:
亚里士多德创造了如上文提到的三段论的逻辑理论。两千多年来,数学家们对其苦苦思索,试图用数学符号和操作符来表现它。19世纪以前,唯一能接近这个目标的人是布莱尼兹(1648—1716),他早年涉足逻辑学领域,后来转向其他学科(比如说,他几乎和牛顿同时独立发明了微积分)。19世纪中期的几位数学家在逻辑理论的数学定义上做了一些工作(最著名的是迪摩根),但只有1815年生于英格兰的乔治.布尔有真正概念上的突破—布尔代数

概念:
在布尔代数中操作数不是指数字,而是指。一个集仅仅表示一组事物,也就是后来熟知的集合
在布尔代数中,操作符“+”意味着两个集合取并集,操作符“x”表示两个集合取交集
与传统代数一样,我们可以把F x T写成F·T或FT。
传统代数中的交换律、结合律、分配率在布尔代数中均适用,如下:
这里写图片描述

而且,在布尔代数中,操作符“+”可以对“x”进行分配,这在传统代数中是不成立的,如下:
这里写图片描述
另外,布尔代数中还有两个符号。“1”代表全集,“0”代表空集
符号1可以用一个减号“-”来排除一些事物。比如“1-M”代表除了公猫意外的所有猫。

布尔表达式(可以把F看成是母猫):
这里写图片描述

语言中的“与、或、非”(AND、OR、NOT)概念与布尔代数中的操作符的关系:
这里写图片描述

布尔代数解决现实中逻辑问题的应用:
例一:根据条件推断出某种结论:
这里写图片描述
例二:判断一些事物是否满足一定的标准:
这里写图片描述

这里写图片描述

这里写图片描述


用电路表示布尔代数:

表示布尔代数的“取交集”、“x”、“AND”、“与”(怎么说都行)操作的电路:
这里写图片描述

表示布尔代数的“取并集”、“+”、“OR”、“或”(怎么说都行)操作的电路:
这里写图片描述

所以可以用如下电路来解决上文说的买猫的问题:
这里写图片描述

关于电路的其他的题外话:
这里写图片描述


自我思考:

传统代数通过运算帮助人们不再需要实际的去数数,而只需通过运算就可得到结果。例如2+3,你不需要真的拿两根棍子再摆上三根棍子,然后再数一下,哦,是五根棍子。你只需通过数学运算,2+3=5,就可以得到有5根棍子。

我们可以通过自己大脑的逻辑思维推断能力得到第三段的结论,不过我们完全可以不用这么费脑力,而直接通过布尔代数演算得出结果。

由上两个例子其实可以感受到:
数学真的是一个很好的工具,帮助我们解决很多现实中的问题,因为我们现在只需要在纸上演算就可以了,而不需要真的去摆棍子、数棍子,不需要大费脑力去进行逻辑推断。
再往下想,数学可以解决现实中的问题,而数学可以通过二进制的方式来表达,二进制又可以通过电来表达,所以,结论是,可以通过电来解决现实中的问题,这就非常有意思了。


我想,本章最重要的意义是向我们说明了:

布尔代数帮助我们只需在纸上演算就可解决现实中的逻辑问题;而电路帮助我们连在纸上演算都不需要了,只需看灯亮不亮就可得到结果,解决现实中的逻辑问题!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
书的作者Charles Petzold是著名的《Programming Windows》的作者。全书风趣幽默,生动活泼,充满生活中的实例和直观的插图。虽以“编码”为题,却是以“编码”为主线,深入浅出地讲解了逻辑代数、离散数学、数字电路、微机原理、汇编语言、编译原理和操作系统等计算机原理方面的基础知识。与计算机专业课本相比,没有艰涩的定义和描述,充分地把抽象的内容形象化了。它可以被定位为大众化的计算机科普书籍,然而与一般的国内计算机科普物相比,它的信息量、专业程度绝对是高一个层次的。因此很适合对计算机有一定应用基础,有兴趣了解一点计算机机理的朋友。同时也可作为学习数字电路、微机原理等课程的启发性引论。   对于计算机专业学生,我觉得此书同样非常值得一看。就个人体会,举一二例:在看到二进制的加减实现那块,虽然自己原先清楚那些概念和方法,但是基于死板的公式和法则的,没有一个直观的体会。而在《CODE》中,分别釆用实物、简单电路、十进制数进行类比,逐步揭示了补码、加法器等机理,可谓温故而知新。阅书中对汇编语言在各个节循序渐进的引入,才发现原来汇编那些“古怪”的逻辑竟是如此的自然。而书中对数字电路的阐述完全是基于计算机实际应用的,从逻辑电路到触发器、存储器,直至微处理芯片,每一步在讲解电路原理的同时都辅以如何达到应用目的,让人不会觉得空洞和抽象。   此书比较注重内容的历史连贯性,各个节都提及了相关技术的发展史,让我们认识到数字技术与计算机的发明及应用是一个逐级推进的历史过程。同时一些趣闻轶事也使我们开怀一笑。另一个特点是书中的不少东西是可以亲自实践的(通过实物或软件仿真),比如一些简单数字电路的实现。这很可能激发一些朋友自己造一块CPU的冲动。   高手高就高在把深奥的理论知识平民化了。总之,我觉得如果你是计算机专业学生,了《CODE》,也许会发现原来还有一些简单的道理自己并不清楚,有茅塞顿开之感。而对不了解计算机的人来说,你将会豁然开朗——原来计算机并不神秘!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值