上一篇:为什么计算机用二进制—(计算机基础课八)

请反复看,理解这个思想很重要,在编程的时候,经常会用到。

 

NOT

 

NOT 操作把布尔值反转,把 true 进行 NOT 就会变成 false,反之亦然,

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

 

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

 

 

 

我们也可以把这个做成"真值表",这个电路没什么意思,因为它没做什么事,输入和输出是一样的。但我们可以稍加修改,实现 NOT。

与其把下面那根线当做 输出,我们可以把输出放到上面,如果打开输入,电流可以流过然后 "接地",输出就没有电流,所以输出是 off。

输出就没有电流,所以输出是 off。

 

如果用水来举例,就像家里的水都从一个大管子流走了,打开淋浴头一点水也没有如果输入是 on,输出是 off。当输入是 off,电流没法接地,就流过了输出,所以输出是 on;当输入是 off,电流没法接地,就流过了输出,所以输出是 on。如果输入是 off,输出是 on,和 NOT 操作表一样。

 

我们做了个有点用的电路!我们叫它 "NOT 门" 之所以叫 "门",是因为它能控制电流的路径。

 

AND

 

"AND"操作有 2 个输入,1 个输出。如果 2 个输入都是 true,输出才是 true。

你可以想成是说真话,如果完全不说谎,才是诚实,举例,看如下这个句子,我叫 Carrie Anne "而且"我穿着蓝色的衣服,2 个都是真的,所以整个是真的。但如果说,我叫 Carrie Anne"而且"我穿了裤子, 就是假的。

因为我没穿裤子,或长裤,如果你是英国人你会用这个词……(英/美单词不同梗)虽然前半句是真的,但是 真 "AND" 假,还是假。就算把前后顺序反过来,也依然是假,如果我说 2 个假的事情,那么结果是假。

 

和上次一样,可以给"AND"做个表,为了实现 "AND 门",我们需要 2 个晶体管连在一起,这样有 2 个输入和 1 个输出。如果只打开 A,不打开 B , 电流无法流到 output,所以输出是 false。如果只打开 B,不打开 A ,也一样,电流无法流到 output。只有 A 和 B 都打开了,output 才有电流。

 

OR 

 

只要 2 个输入里,其中 1 个是 true,输出就是 true。比如,我叫 Margaret Hamilton"或"我穿着蓝色衣服,结果是 true,虽然我不是 Margaret Hamilton,但是我穿着蓝色衣服,所以结果是 true。

 

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

 

实现 "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 形状和太空船"不是标准叫法,只是我喜欢这样叫而已。

 

我们可以用这种方法表示它们,构建更大的组件,就不会变得很复杂,晶体管和电线依然在那里,我们只是用符号来代表而已。

 

除了前面说的三个,另一个有用的布尔操作叫 "异或", 简称 XOR,我们将在明天讲。