Loading AI tools
来自维基百科,自由的百科全书
布爾邏輯(英語:Boolean algebra)得名於喬治·布爾,他是愛爾蘭科克的皇后學院的英國數學家,他在十九世紀中葉首次定義了邏輯的代數系統。現在,布爾邏輯在電子學、計算機硬件和軟件中有很多應用。在1937年,克勞德·艾爾伍德·香農展示了布爾邏輯如何在電子學中使用。
「布爾邏輯」的各地常用名稱 | |
---|---|
中國大陸 | 布爾邏輯 |
臺灣 | 布林運算 |
設X是一個集合:
設圖像為集合A包含"全集"中所有偶數(二的倍數),集合B包含"全集"中所有三的倍數。則兩個集合的交集(在集合A AND B中所有的元素)將是"全集"中所有六的倍數。
集合A的補集(所有不在集合A中的元素)是"全集"中所有的奇數。
儘管在任何布爾運算中都最多有兩個集合參與,從這個運算所形成的新集合可以接着與其他集合聯合起來實現另外的布爾運算。使用前面的例子,我們可以定義一個新集合C作為"全集"中所有五的倍數的集合。所以"集合A AND B AND C"將是"全集"中所有30的倍數。如果為了更方便,我們可以把集合AB當作集合A和B的交集,或者說"全集"中所有六的倍數的集合。那麼我們可以稱"集合AB AND C"是"全集"中所有30的倍數的集合。我們接着進一步的把這個結果叫做集合ABC。
儘管任何數目的邏輯AND(或任何數目的邏輯OR)可以被連接在一起而沒有歧義,AND和OR和NOT的組合可以導致歧義的情況。在這種情況下,可以使用圓括號來分清運算的次序。永遠是最內的括號內的運算先進行,隨後是外層的括號以此類推,直到在所有的括號內運算都完成。接着進行括號外的運算。
為兩個主要的二元運算的符號定義為(邏輯與/交集)和(邏輯或/併集),把單一的一元運算的符號定義為 / ~(邏輯非/補集)。我們還使用值0(邏輯假/空集)和1(邏輯真/全集)。下列性質適用於布爾代數和布爾邏輯二者:
布爾邏輯只使用兩個值0和1,這兩個值的交集和併集可以使用真值表定義如下:
|
|
可以使用各種樣式的基本算符來表達布爾邏輯。AND(與)、OR(或)、NOT(非)是最直覺的。數學家、工程師和程序員經常使用 +表示或,表示與(因為在某些方面這些運算類似於在其他代數結構中的加法和乘法,並且這種記號使熟悉普通代數的人易於得到積之和範式)。非也表示為在要否定的表達式頂上的一個橫線。
另一種記號使用"交"表示與使用"並"表示或。但是這會導致混淆,因為術語"並"也經常用於合併集合的另一個布爾運算,它包括了與和或二者。
同樣適用於聯立不等式:
在把英語句子轉換成形式的布爾語句的時候要小心。很多英語詞語不精確的意義可能導致多種邏輯結果,例如英語單詞NOT(非):「所有閃光的東西不是金子。」可以解析為以下不同的邏輯表達:
作為英語單詞的AND(與)和OR(或)在特定情況下是可以互換使用的:
還要注意在英語中單詞OR(或)可以分別對應於邏輯表達中的或(OR)(此亦彼亦)和異或(XOR)(此即彼非),具體意思要依賴於上下文進行判斷:
在規定計算機程序或者電子電路時,如何使用英語準確描述其功能邏輯是個關鍵問題。例如,對於功能「程序應校驗申請者已經選擇取了男性或女性單選框」,應當被當作一個異或(非此即彼)邏輯(即「程序應校驗申請者已經選擇取了男性或女性選項,並且此二選項互相排他」),則程序語句須特別限定「二者之間只有一個能被選擇」來確保校驗功能的實現;假如將其混為或邏輯(此亦彼亦),則該校驗功能有可能被錯誤地實現,造成申請者同時選擇兩個選項、而校驗依然通過。
在其他非技術語言的情況下,對於一段英語文字的解釋可能包含更多的不確定性,可能需要深入探討、以確保明晰該段文字背後所含的邏輯意義的多種可能性。
布爾邏輯還在電子工程中的電路設計中使用;這裡的0和1表示在數字電路中某一個位的不同狀態,典型的是高和低電壓。使用包含變量的表達式描述電路,並且對於這些變量的所有的值兩個這種表達式是等價的,當且僅當對應的電路有相同的輸入-輸出行為。進一步的說,每種可能的輸入-輸出行為都被建模為適合的布爾表達式。
基本的邏輯閘比如與閘、或閘、非閘可以單獨使用,或者聯合成與非閘、或非閘和異或閘來控制數字電子和電路。這些閘的串聯或並聯控制了運算的優先級。
關係數據庫使用SQL語言,或者其他特定於數據庫的語言,來進行查詢,它可以包含布爾邏輯。對於這種應用,在表中每個記錄都可以被當作"集合"的"元素"。例如,在SQL中,下列SELECT語句被用來從在數據庫中的表格中檢索數據:
在有多個運算出現的時候,可以使用圓括號來明確的指定布爾運算發生的次序:
在需要的時候可以使用嵌套的圓括號。
聯合兩個(或更多)表格的任何布爾運算在關係數據庫術語中都被稱為連接。
對於這種應用,在互聯網上的每個web頁面都被當作是"集合"的"元素"。各種在線搜索引擎使用各自不同的語法。下面描述Google使用的語法。