作为 Cheat Sheet 来使用。

先从常见的逻辑闸开始:

AND:当所有 Input 为 True 时,返回 True,否则 False。

Input Output
0 0 0
0 1 0
1 0 0
1 1 1

OR:只要有一个 Input 为 True,就返回 True。

Input Output
0 0 0
0 1 1
1 0 1
1 1 1

NAND:非 AND,和 AND 相反。

Input Output
0 0 1
0 1 1
1 0 1
1 1 0

NOR:非 OR,和 OR 相反。

Input Output
0 0 1
0 1 0
1 0 0
1 1 0

XOR:异或(exclusive-OR),输入值只能有一个是 True,才会返回 True。

Input Output
0 0 0
0 1 1
1 0 1
1 1 0

XNOR:非异或,和 NOR 相反:

Input Output
0 0 1
0 1 0
1 0 0
1 1 1

NOT:非

Input Output
0 1
1 0

一些运算规则:

De Morgan’s laws

(当遇到混乱的一堆 Logic gates 的时候,可以用这个定律来化减,这样链接电路的时候方便点)

 

Mask:

假设你有一串二进制 01100010,你想让第 3 位(从 0 开始计算)的 bit 变成 1,但又不改变其他的 bit,该怎么办呢?

应用一个 mask( | 1000):

01100010 | 1000 = 01101010

使用 OR 操作,如果 mask 在原始二进制中遇到 0,则保留 0。如果遇到 1,则保留 1(1 OR 0 = 1)。

在 C 语言中:

ORIG |= (1 << 3);

如果想将第 5 位的 bit 变成 0,则用 AND mask:

01100010 & 011111 = 01000010

(0 & 1 = 0,1 & 1 = 1)

在 C 语言中:

ORIG &= ~(1 << 5);

解释下:

(1 << 5) 是 100000,

~(100000) = 011111

ORIG & 011111

其实这篇文章是和上一篇《方波(Square Wave)的一些基本概念》有联系的哦。

Leave a Reply

Your email address will not be published.

*

code