布林代數計算機:真值表、迪摩根定律同邏輯化簡
你寫嘅每個 "if" 陳述式、你篩選嘅每個資料庫查詢、同你見到嘅每個搜尋引擎結果,都由布林邏輯驅動——一個每個變數嚴格為真或假(1 或 0)嘅數學系統。George Boole 喺 1854 年嘅《思維法則》入面發表咗呢個代數,佢喺數學系入面靜靜咁存在咗差唔多一個世紀,直到 Claude Shannon 發現佢可以描述電氣開關電路,為每一部曾經建造嘅數碼電腦奠定咗基礎。時至今日,布林代數支撐住由 SQL WHERE 子句到搜尋引擎查詢到設計有數十億個邏輯閘嘅微處理器嘅一切。我哋嘅免費布林代數計算機俾你輸入任何布林表達式(最多 8 個變數),即刻見到佢嘅真值表、使用代數規則同迪摩根定律化簡佢,同查看等效嘅邏輯閘圖——全部喺你嘅瀏覽器入面執行。
布林邏輯計算器
免費 · 無需註冊
分步指南
輸入你嘅布林表達式
使用標準符號輸入你嘅表達式:& 或 ∧ 表示 AND,| 或 ∨ 表示 OR,! 或 ¬ 表示 NOT,^ 或 ⊕ 表示 XOR。你可以使用括號進行分組,同變數名好似 A、B、C,最多到 H。例子:(A & B) | (!A & C) 表示「要麼 A 同 B 都係真,要麼 A 係假而 C 係真」。計算機會即時驗證語法同顯示一個用正規數學符號自動格式化嘅表達式版本。
查看真值表
真值表顯示每種可能嘅輸入值組合(n 個變數有 2ⁿ 行)同對應嘅輸出。每一行顯示俾定該特定輸入下表達式嘅評估值為真定假。對於 3 個變數(A、B、C),你會見到 8 行;對於 4 個變數,16 行。真值表有顏色編碼——真輸出係綠色,假輸出係灰色——等你可以即刻掃描出模式。呢個係理解一個布林表達式實際意思嘅最快方法。
應用化簡同查看電路
點擊「化簡」,計算機會應用布林代數恆等式將你嘅表達式縮減到最簡單形式。逐步面板顯示每個階段應用咗邊個規則:冪等律(A&A=A)、互補律(A&!A=0)、吸收律(A|(A&B)=A)同迪摩根定律。化簡後嘅表達式旁邊會顯示一個使用標準 ANSI/IEEE 符號嘅邏輯閘圖——AND(平背)、OR(彎背)、NOT(帶氣泡嘅三角形)、XOR(帶額外線條嘅 OR)。
使用技巧與最佳實踐
迪摩根定律係兩個最強大嘅布林恆等式:!(A & B) = !A | !B,同 !(A | B) = !A & !B。佢哋俾你將 AND 轉換為 OR 反之亦然,同時將 NOT 向內推。用實際術語講:「唔係(落雨 AND 凍)」等於「唔落雨 OR 唔凍」。呢啲定律對於化簡複雜嘅 SQL WHERE 子句同搜尋引擎查詢好重要。
XOR(互斥或)運算子喺剛好一個輸入為真時返回真——佢係「一係呢個一係嗰個,但唔係兩個都係」嘅運算子。XOR 同常數 1 就係 NOT:A ⊕ 1 = !A。XOR 亦係佢自己嘅逆:(A ⊕ B) ⊕ B = A。呢個自逆特性令 XOR 成為好多加密方案同基本檢查和演算法嘅基礎。
NAND 同 NOR 被稱為「通用閘」,因為你可以只用 NAND 閘(或者只用 NOR 閘)嚟建造 AND、OR 同 NOT。理論上每個存在嘅數碼電路都可以簡化為一個 NAND 閘網絡。事實上,NAND 快閃記憶體(用喺 SSD 同 USB 硬碟)就係以呢個閘命名。
喺代碼入面寫布林條件嘅時候,條件嘅順序對短路評估好重要。喺 `if (cheapCheck() && expensiveCheck())` 入面,如果 cheapCheck() 返回 false,expensiveCheck() 永遠唔會執行。將你最快速失敗嘅條件放喺最前——呢個係一個簡單嘅最佳化,喺緊密循環入面會累積。
真值表以指數級增長:n 個變數表示 2ⁿ 行。喺 8 個變數時,係 256 行——仲算可以管理。喺 32 個變數時,你需要超過 40 億行。呢個就係點解大型數碼電路嘅形式驗證使用 SAT 求解器同二進制決策圖而唔係暴力真值表。
SQL 嘅三值邏輯(TRUE、FALSE、NULL)擴展咗經典布林代數。喺 SQL 入面:NULL AND FALSE = FALSE(短路),但 NULL AND TRUE = NULL(未知),而 NULL OR TRUE = TRUE(短路)。喺寫帶有可空欄位嘅資料庫查詢時,一定要考慮 NULL 傳播——佢係最常見嘅微妙查詢錯誤來源之一。
卡諾圖(K-maps)係對於最多 4 個變數嘅代數化簡嘅視覺替代方案。將真值表排列成一個網格,相鄰嘅格仔差剛好一個變數;圈出大小為 1、2、4 或 8 嘅 1 嘅群組;每個群組對應一個化簡嘅乘積項。我哋嘅計算機會喺代數化簡旁邊顯示 2-4 個變數表達式嘅卡諾圖。
常見問題解答
布林代數係運算嘅隱藏文法——由你 CPU 入面嘅邏輯閘到你 SQL 入面嘅 WHERE 子句再到 Google 嘅搜尋運算子。我哋嘅計算機令呢個代數變得可見,化簡表達式、產生真值表同畫出你邏輯描述嘅電路。即刻試下,睇下你嘅條件真正意思係咩。
免費試用此工具 →open_in_new