跳轉至內容

計算機硬體基礎:邏輯閘

來自 Wikibooks,開放的書籍,開放的世界

試卷 2 - ⇑ 計算機系統基礎 ⇑

← 程式翻譯器型別 邏輯閘 布林門組合 →


1854 年,英國數學家 喬治·布林 開發了布林代數。與使用數字的代數不同,布林代數使用真值,**真** (1) 和**假** (0)。透過使用真值定義句子並對這些真值執行運算,您可以找出複雜語句的總體結論。布林代數對計算機科學產生了巨大影響,計算機理解的語言是一種 1 和 0 的語言,也就是布林語言。

0 0 0 0
1 0 0 1
0 1 0 1
1 1 1 1
0 1
1 0
布林代數在真值表中的示例

邏輯閘是執行布林輸入運算的硬體,使我們能夠從抽象的布林代數中建立複雜的裝置。邏輯閘是硬體的基本構建塊,處理器將由數十億個邏輯閘組成。邏輯閘通常有一個或兩個輸入,在以下示例中定義為 A 和 B。您需要了解六種型別的邏輯閘

非門 (NOT)

[編輯 | 編輯原始碼]
非門只有一個輸入並輸出一個輸出

一個非門 將始終給出與輸入相反的輸出,例如 1 (非門) 0。非門接受一個布林輸入並將其翻轉。可以進行雙重非運算。這將反轉原始的非運算。符號上將會有額外的橫線。

在布林代數中,我們透過在字母上方放置一個橫線 () 或字母 () 來編寫 符號。

以下是非門工作的示例
  • NOT(不下雨) = 下雨

為了總結,以下是一個真值表,顯示了 A 和 之間的關係

A
0 1
1 0

與門 (AND)

[編輯 | 編輯原始碼]
與門接受兩個輸入並將它們組合起來形成一個輸出

一個與門 將組合兩個輸入的布林值(您可以獲得超過兩個輸入,但我們不需要在這裡瞭解這種型別的邏輯閘)。當且僅當兩個輸入都為真時,它才會輸出真。如果任何一個輸入為假,它將輸出假。

在布林代數中,我們透過在兩個 () 或多個 () 值之間放置一個點來編寫 符號。

以下是與門工作的示例
  • 六大於四,並且貓大於倉鼠 = TRUE

記住與門如何工作的一個簡單方法是把它想象成一個用來開啟燈泡的電路。如果兩個開關都開啟,燈泡就會亮;如果任何一個開關關閉,燈泡就不會亮。

與門等效的電路圖

總而言之,這裡是一個真值表,顯示了兩個輸入 A 和 B 的所有不同值以及將這些值進行與運算的結果。

A B A.B
0 0
0
0 1
0
1 0
0
1 1
1

或 (+)

[edit | edit source]
或門接收兩個輸入並將它們組合成一個輸出。

一個門將組合兩個輸入的布林值。如果一個或多個輸入為真,則輸出將為真。如果兩個輸入都為假,則輸出將為假。

在布林代數中,我們透過在兩個 () 或多個 () 值之間放置一個加號來表示符號。

以下是或門工作的一些示例。
  • 人類有兩條腿或大象有 8 條腿 = 真

記住或門如何工作的一個簡單方法是把它想象成一個用來開啟燈泡的電路。如果一個或多個開關開啟,燈泡就會亮;如果兩個開關都關閉,燈泡就不會亮。

與或門等效的電路圖

總而言之,這裡是一個真值表,顯示了兩個輸入 A 和 B 的所有不同值以及將這些值進行或運算的結果。

A B A+B
0 0
0
0 1
1
1 0
1
1 1
1

異或 ()

[edit | edit source]
異或門接收兩個輸入並將它們組合成一個輸出。

一個異或門將組合兩個輸入的布林值。如果只有一個輸入為真,則輸出將為真。如果兩個輸入都為假或兩個輸入都為真,則輸出將為假。

在布林代數中,我們透過在兩個 () 或多個 () 值之間放置一個帶圓圈的加號來表示異或符號。

以下是異或門工作的一些示例。
  • 下雨異或不下雨 = 真

總而言之,這裡是一個真值表,顯示了兩個輸入 A 和 B 的所有不同值以及將這些值進行異或運算的結果。

A B
0 0
0
0 1
1
1 0
1
1 1
0

與非門 (NAND)

[edit | edit source]
與非門接收兩個輸入並將它們組合成一個輸出。

非門 將組合兩個輸入的布林值,並將它們一起進行與運算,然後對結果進行非運算。如果**一個或更少**輸入為真,則輸出為真。如果兩個輸入都為真,則輸出為假。要繪製一個非門,您需要繪製一個與門並在前面新增一個圓圈,如上圖所示。

在布林代數中,我們透過採用與方程並對結果進行非運算來寫一個符號()。

以下是工作中的非門示例:
  • (A=A) 非 (A<>B) = TRUE

總而言之,這裡是一個真值表,顯示了兩個輸入 A 和 B 的所有不同值以及將這些值一起進行非運算的結果。

A B
0 0 0
1
0 1 0
1
1 0 0
1
1 1 1
0

或非門 (NOR)

[edit | edit source]
非門接受兩個輸入並將它們組合起來形成一個輸出。

非門 將組合兩個輸入的布林值,並將它們一起進行或運算,然後對結果進行非運算。如果**沒有**輸入為真,則輸出為真。如果任一或兩個輸入為真,則結果為假。要繪製一個非門,您需要繪製一個或門並在前面新增一個圓圈,如上圖所示。

在布林代數中,我們透過採用或方程並對結果進行非運算來寫一個符號()。

以下是工作中的非門示例:
  • (A=A) 非 (A<>B) = FALSE
A B
0 0 0
1
0 1 1
0
1 0 1
0
1 1 1
0


練習:邏輯閘

給出或語句的符號和門圖。

回答

+

給出與語句的符號和門圖。

回答

.

給出異或語句的符號和門圖。

回答

給出以下方程的答案:

TRUE AND TRUE

回答

TRUE

TRUE + FALSE

回答

TRUE

TRUE + TRUE

回答

TRUE

TRUE TRUE

回答

FALSE

NOT(TRUE) . TRUE

回答

FALSE

回答

TRUE

畫一個與非門和真值表

回答

A B
0 0 0
1
0 1 0
1
1 0 0
1
1 1 1
0

完成下表

名稱 與非門 (NAND) 或非門 (NOR) 與門 (AND) 非門 (NOT) 或門 (OR) 異或門 (XOR)
符號
真值表

回答

名稱 與非門 (NAND) 或非門 (NOR) 與門 (AND) 非門 (NOT) 或門 (OR) 異或門 (XOR)
符號
真值表
A B
0 0 0
1
0 1 0
1
1 0 0
1
1 1 1
0
A B
0 0 0
1
0 1 1
0
1 0 1
0
1 1 1
0
A B A.B
0 0
0
0 1
0
1 0
0
1 1
1
A
0 1
1 0
A B A+B
0 0
0
0 1
1
1 0
1
1 1
1
A B
0 0
0
0 1
1
1 0
1
1 1
0
華夏公益教科書