小屋創作

日誌2014-07-15 02:48

什麼是布林代數?邏輯閘又是啥?

作者:解凍豬腳


安安,

又到了好久不見的資訊時間

前一陣子在各大網站研究了一下RC4加密

因此決定在這裡稍微介紹微觀之下的電腦運作原理。



看到標題可能大家會覺得,這些專有名詞聽起來像是很變態、很困難的東西,

但其實它們決定了在電腦裡面最基本的運作概念唷

我想,即使是沒有接觸過相關科系的人,應該多少都有聽過,

電腦裡面就是一堆 1 和 0 相互交疊才能運作~



(……1 和 0 相互交疊



廢話不多說,我們先來介紹所謂的 1 跟 0 。

其實在電腦的零件裡面,因為它只是一堆電路集結成的東西,

所以電腦不懂什麼叫做「123」,更看不懂什麼叫做「ABC」,

在電路板的眼中,只有「高電壓」與「低電壓」的差別——

因此,那些發明電腦的人就在想了,如何用這高低電壓來表示東西呢?



假設今天電路板某處的電壓高低的順序是是「高低低高高高低高」

你可能會想說:「What the fuck?」

看似沒用,但它是可以用來表示東西的哦

像這個順序我們就可以一個一個對應下來,

翻成:10011101——這串1和0又可以代表什麼?

面對這個問題,那群開發電腦的科學家就提出了「二進位」的概念

譬如一般來說,我們在數東西是這樣的:


10

因為最左邊那一位數滿第十個的時候就會多一位,所以我們叫作「十進位」


那二進位呢?

既然是二進位,當然就只能用0和1來表示數字了,滿兩個就進一個位:

1011100101

110111100010011010

對應到後面就可以知道,這個10011101轉換成十進位

就是我們平常人用的數字系統的「157」
(註:避免文章失焦,不贅述十進位與二進位的轉換)

所以在電腦裡面表示數字的方法就這麼誕生了




光是表示數字有用嗎?當然沒有用呀!

電腦有太多太多的事情要做,就拿最簡單的來說,譬如:

1. 電腦要隨時檢查你是不是按了 Alt 鍵

我們單單講這個情況好了,

「按了 Alt 鍵」、「沒按 Alt 鍵」這兩個不同的狀態要如何表示呢?

聰明的科學家利用了只有 0 和 1 的特性,弄成這兩個情況:

按  → 把 1 存到記憶體裡面

沒按 → 把 0 存到記憶體裡面

像這樣用 1 和 0 表示的概念,我們叫做「布林代數」,

這個 1(有、成立) 我們在布林代數裡面稱作「True(真)」

反過來說, 0 (沒有、不成立)我們在布林代數裡面稱作「False(假)」

我們就成功做到判斷「對與錯」的目的了。

-

但它還是很忙。假設有三個情況:

1. 電腦要隨時檢查你是不是按了 Alt 鍵

2. 電腦要隨時檢查你是不是按了 F4 鍵

3. 電腦要隨時檢查你是不是同時按了 Alt 和 F4 這兩顆鍵

若我們今天要的是上述的第三種情況,又該怎麼辦?



我告訴你,科學家還是很聰明的。

所以他們又做了一個東西叫做「邏輯閘」來判斷這些情況。



一般來說,邏輯閘被分為七種,

分別叫做 NOTORANDNANDNORXORXNOR

就拿其中一個最簡單的 AND 來說好了,這個閘一次接收兩個信號,
(註:這個AND跟英文的and是一樣的意思,就是「而且」,兩個東西都成立的時候就OK)

如果今天收到的其中一個是 1 、另外一個是 0,那它最後就輸出 0

(因為這樣表示「沒有兩個條件一起達成」,所以不成立)



那如果兩個都是1的情況下,就輸出1:
(因為這就是"A達成且B達成",所以成立)





順帶一提,習慣上常常表示:
0 AND 0 = 0
0 AND 1 = 0
1 AND 0 = 0
1 AND 1 = 1

像這樣會有不同的輸出結果,就是"AND"邏輯閘的運作。

如果有認真看文章,

這裡可能會有人問,「為什麼 0 AND 0 不會是 1 呢?兩個不是都一樣嗎?」

其實要解釋它是很簡單的,但這裡就必須先問你:

「你的身高超過970公分 而且 你的體重超過800公斤」成立嗎?

我們一個一個看下去吧:

「你的身高超過970公分」是錯的。

「你的體重超過800公斤」是錯的。

如果是這樣,

難道「你的身高超過970公分 而且 你的體重超過800公斤」就會是對的嗎?

那我想你應該明白了。



除此之外,邏輯閘最常應用在程式設計上,

我們常常會看到一段程式碼裡面寫著:

if ( A AND B ) { XXXXX; }

它在電腦裡面執行上面所謂「XXXXX」的先決條件,

就是括號裡面的東西要「成立」(也就是上面寫的 A AND B 要輸出 True )

像這種情況也可以用我們所謂的邏輯閘來解釋,

於是程式的語法就變得更接近人類語言了。

如此一來,

邏輯閘就在這種場合大大發揮了它的功能——讓電腦用人類的邏輯去判斷正確或錯誤。

後來隨著不斷進步及發展,眾人透過他們的智慧,

把這七個邏輯閘用不同的方式組合起來,發揮了更多強大的功能。



附錄——不同邏輯閘的運作方式:

NOT 1 = 0
NOT 0 = 1

0 OR 0 = 0
0 OR 1 = 1
1 OR 0 = 1
1 OR 1 = 1

0 NOR 0 = 1
0 NOR 1 = 0
1 NOR 0 = 0
1 NOR 1 = 0
註:A NOR B = NOT ( A OR B )

0 AND 0 = 0
0 AND 1 = 0
1 AND 0 = 0
1 AND 1 = 1

0 NAND 0 = 1
0 NAND 1 = 1
1 NAND 0 = 1
1 NAND 1 = 0
註:A NAND B = NOT ( A AND B )

0 XOR 0 = 0
0 XOR 1 = 1
1 XOR 0 = 1
1 XOR 1 = 0

0 XNOR 0 = 1
0 XNOR 1 = 0
1 XNOR 0 = 0
1 XNOR 1 = 1
註:A XNOR B = NOT ( A XOR B )



上面的附錄可以不必看,因為那些是比較深入的(當然如果能看得懂是更好)

它們在不同領域有不同的用途;希望這樣一來,大家對於邏輯閘與布林代數有初步的了解。



 

68

46

LINE 分享

相關創作

焦慮恐慌症的治療日記

基礎&造型。 0502 道中 (上班趕進度喵

伊布氾濫報告書

留言

開啟 APP

face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】