汇编语言布尔表达式(NOT、AND、OR)
布爾代數(shù)(boolean algebra)定義了一組操作,其值為真(true)或假(false)。它的發(fā)明者是十九世紀(jì)中葉的數(shù)學(xué)家喬治?布爾(George Boole)。
?
在數(shù)字計(jì)算機(jī)發(fā)明的早期,人們發(fā)現(xiàn)布爾代數(shù)可以用來(lái)描述數(shù)字電路的設(shè)計(jì)。同時(shí),在計(jì)算機(jī)程序中,布爾表達(dá)式被用來(lái)表示邏輯操作。
一個(gè)布爾表達(dá)式(boolean expression)包括一個(gè)布爾運(yùn)算符以及一個(gè)或多個(gè)操作數(shù)。每個(gè)布爾表達(dá)式都意味著一個(gè)為真或假的值。以下為運(yùn)算符集合:
- 非(NOT):標(biāo)記為 ? 或 ~ 或 '
- 與(AND):標(biāo)記為^或 ·
- 或(OR):標(biāo)記為 ∨ 或 +
NOT 是一元運(yùn)算符,其他運(yùn)算符都是二元的。布爾表達(dá)式的操作數(shù)也可以是布爾表達(dá)式。示例如下:
| 達(dá)式 | 說(shuō)明 | 表達(dá)式 | 說(shuō)明 |
|---|---|---|---|
| ?X | NOT X | ?X∨Y | (NOT X) OR Y |
| X^Y | X AND Y | ?(X^Y) | NOT (X AND Y) |
| X∨Y | X OR Y | X^?Y | X AND (NOT Y) |
NOT
NOT 運(yùn)算符將布爾值取反。用數(shù)學(xué)符號(hào)書寫為 ?X,其中,X 是一個(gè)變量(或表達(dá)式),其值為真(T)或假(F)。下表列出了對(duì)變量 X 進(jìn)行 NOT 運(yùn)算后所有可能的輸岀。 左邊為輸入,右邊(陰影部分)為輸出:
| X | ?X |
| F | T |
| T | F |
真值表中,0 表示假,1 表示真。
AND
布爾運(yùn)算符 AND 需要兩個(gè)操作數(shù),用符號(hào)表示為 X ^ Y。下表列出了對(duì)變量 X 和 Y 進(jìn)行 AND 運(yùn)算后,所有可能的輸出(陰影部分):
| X | Y | X^Y |
| F | F | F |
| F | T | F |
| T | F | F |
| T | T | T |
當(dāng)兩個(gè)輸入都是真時(shí),輸出才為真。這與 C++ 和 Java 的復(fù)合布爾表達(dá)式中的邏輯 AND 是相對(duì)應(yīng)的。
匯編語(yǔ)言中 AND 運(yùn)算符是按位操作的。如下例所示,X 中的每一位都與 Y 中的相應(yīng)位進(jìn)行 AND 運(yùn)算:
X :? ? ? ? 11111111
Y :? ? ? ? 00011100
X ^ Y :? 00011100
如下圖所示,結(jié)果值 0001 1100 中的每一位表示的是 X 和 Y 相應(yīng)位的 AND 運(yùn)算結(jié)果。
OR
布爾運(yùn)算符 OR 需要兩個(gè)操作數(shù),用符號(hào)表示為 X∨Y。下表列出了對(duì)變量 X 和 Y 進(jìn)行 OR 運(yùn)算后,所有可能的輸出:
| X | Y | X∨Y |
| F | F | F |
| F | T | T |
| T | F | T |
| T | T | T |
當(dāng)兩個(gè)輸入都是假時(shí),輸出才為假。這個(gè)真值表與 C++ 和 Java 的復(fù)合布爾表達(dá)式中的邏輯 OR 對(duì)應(yīng)。
OR 運(yùn)算符也是按位操作。在下例中,X 的每一位與 Y 的對(duì)應(yīng)位進(jìn)行 OR 運(yùn)算,結(jié)果為 1111 1100:
X :? ? ?11101100
Y :? ? ?00011100
X∨Y : 11111100
如下圖所示,每一位都獨(dú)立進(jìn)行 OR 運(yùn)算,生成結(jié)果中的對(duì)應(yīng)位。
運(yùn)算符優(yōu)先級(jí)
運(yùn)算符優(yōu)先級(jí)原則(operator precedence rule)用于指示在多運(yùn)算符表達(dá)式中,先執(zhí)行哪個(gè)運(yùn)算。在包含多運(yùn)算符的布爾表達(dá)式中,優(yōu)先級(jí)是非常重要的。
如下表所示,NOT 運(yùn)算符具有最高優(yōu)先級(jí),然后是 AND 和 OR 運(yùn)算符。可以使用括號(hào)來(lái)強(qiáng)制指定表達(dá)式的求值順序:
| 表達(dá)式 | 運(yùn)算符順序 |
| ?X∨Y | NOT,然后 OR |
| ?(X^Y) | OR,然后 NOT |
| X∨(X^Y) | AND,然后 OR |
布爾函數(shù)真值表
布爾函數(shù)(Boolean function)接收布爾輸入,生成布爾輸出。所有布爾函數(shù)都可以構(gòu)造一個(gè)真值表來(lái)展示全部可能的輸入和輸出。下面的這些真值表都表示包含兩個(gè)輸入變量 X 和 Y 的布爾函數(shù)。右側(cè)的陰影部分是函數(shù)輸岀:
示例 1:?X∨Y
| X | ?X | Y | ?X∨Y |
| F | T | F | T |
| F | T | T | T |
| T | F | F | F |
| T | F | T | T |
示例 2:X^?Y
| X | Y | ?Y | X^?Y |
| F | F | T | F |
| F | T | F | F |
| T | F | T | T |
| T | T | F | F |
示例3: (Y^S)∨(X^?S)
| X | Y | S | Y^S | ?S | X^?S | (Y^S)∨(X^?S) |
| F | F | F | F | T | F | F |
| F | T | F | F | T | F | F |
| T | F | F | F | T | T | T |
| T | T | F | F | T | T | T |
| F | F | T | F | F | F | F |
| F | T | T | T | F | F | T |
| T | F | T | F | F | F | F |
| T | T | T | T | F | F | T |
示例 3 的布爾函數(shù)描述了一個(gè)多路選擇器(multiplexer),一種數(shù)字組件,利用一個(gè)選擇位(S)在兩個(gè)輸出(X 和 Y)中選擇一個(gè)。如果 S 為假,函數(shù)輸出(Z)就和 X 相同;如果 S 為真,函數(shù)輸出就和 Y 相同。下面是多路選擇器的框圖:
下一篇:1.11?字符在計(jì)算機(jī)中是如何表示的
1.12?匯編語(yǔ)言布爾表達(dá)式
處理器架構(gòu)
2.1?CPU處理器架構(gòu)
2.2?32位x86處理器架構(gòu)
2.3?x86-64處理器架構(gòu)
2.4?x86計(jì)算機(jī)組件
匯編語(yǔ)言基礎(chǔ)
3.1?第一個(gè)匯編語(yǔ)言程序
3.2?匯編語(yǔ)言常量
3.3?匯編語(yǔ)言保留字
3.4?匯編語(yǔ)言標(biāo)識(shí)符
3.5?匯編語(yǔ)言偽指令
總結(jié)
以上是生活随笔為你收集整理的汇编语言布尔表达式(NOT、AND、OR)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Game of Cards Gym -
- 下一篇: 到底什么是上采样、下采样