汇编语言布尔表达式(NOT、AND、OR)
布爾代數(boolean algebra)定義了一組操作,其值為真(true)或假(false)。它的發明者是十九世紀中葉的數學家喬治?布爾(George Boole)。
?
在數字計算機發明的早期,人們發現布爾代數可以用來描述數字電路的設計。同時,在計算機程序中,布爾表達式被用來表示邏輯操作。
一個布爾表達式(boolean expression)包括一個布爾運算符以及一個或多個操作數。每個布爾表達式都意味著一個為真或假的值。以下為運算符集合:
- 非(NOT):標記為 ? 或 ~ 或 '
- 與(AND):標記為^或 ·
- 或(OR):標記為 ∨ 或 +
NOT 是一元運算符,其他運算符都是二元的。布爾表達式的操作數也可以是布爾表達式。示例如下:
| ?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 運算符將布爾值取反。用數學符號書寫為 ?X,其中,X 是一個變量(或表達式),其值為真(T)或假(F)。下表列出了對變量 X 進行 NOT 運算后所有可能的輸岀。 左邊為輸入,右邊(陰影部分)為輸出:
| X | ?X |
| F | T |
| T | F |
真值表中,0 表示假,1 表示真。
AND
布爾運算符 AND 需要兩個操作數,用符號表示為 X ^ Y。下表列出了對變量 X 和 Y 進行 AND 運算后,所有可能的輸出(陰影部分):
| X | Y | X^Y |
| F | F | F |
| F | T | F |
| T | F | F |
| T | T | T |
當兩個輸入都是真時,輸出才為真。這與 C++ 和 Java 的復合布爾表達式中的邏輯 AND 是相對應的。
匯編語言中 AND 運算符是按位操作的。如下例所示,X 中的每一位都與 Y 中的相應位進行 AND 運算:
X :? ? ? ? 11111111
Y :? ? ? ? 00011100
X ^ Y :? 00011100
如下圖所示,結果值 0001 1100 中的每一位表示的是 X 和 Y 相應位的 AND 運算結果。
OR
布爾運算符 OR 需要兩個操作數,用符號表示為 X∨Y。下表列出了對變量 X 和 Y 進行 OR 運算后,所有可能的輸出:
| X | Y | X∨Y |
| F | F | F |
| F | T | T |
| T | F | T |
| T | T | T |
當兩個輸入都是假時,輸出才為假。這個真值表與 C++ 和 Java 的復合布爾表達式中的邏輯 OR 對應。
OR 運算符也是按位操作。在下例中,X 的每一位與 Y 的對應位進行 OR 運算,結果為 1111 1100:
X :? ? ?11101100
Y :? ? ?00011100
X∨Y : 11111100
如下圖所示,每一位都獨立進行 OR 運算,生成結果中的對應位。
運算符優先級
運算符優先級原則(operator precedence rule)用于指示在多運算符表達式中,先執行哪個運算。在包含多運算符的布爾表達式中,優先級是非常重要的。
如下表所示,NOT 運算符具有最高優先級,然后是 AND 和 OR 運算符??梢允褂美ㄌ杹韽娭浦付ū磉_式的求值順序:
| 表達式 | 運算符順序 |
| ?X∨Y | NOT,然后 OR |
| ?(X^Y) | OR,然后 NOT |
| X∨(X^Y) | AND,然后 OR |
布爾函數真值表
布爾函數(Boolean function)接收布爾輸入,生成布爾輸出。所有布爾函數都可以構造一個真值表來展示全部可能的輸入和輸出。下面的這些真值表都表示包含兩個輸入變量 X 和 Y 的布爾函數。右側的陰影部分是函數輸岀:
示例 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 的布爾函數描述了一個多路選擇器(multiplexer),一種數字組件,利用一個選擇位(S)在兩個輸出(X 和 Y)中選擇一個。如果 S 為假,函數輸出(Z)就和 X 相同;如果 S 為真,函數輸出就和 Y 相同。下面是多路選擇器的框圖:
下一篇:1.11?字符在計算機中是如何表示的
1.12?匯編語言布爾表達式
處理器架構
2.1?CPU處理器架構
2.2?32位x86處理器架構
2.3?x86-64處理器架構
2.4?x86計算機組件
匯編語言基礎
3.1?第一個匯編語言程序
3.2?匯編語言常量
3.3?匯編語言保留字
3.4?匯編語言標識符
3.5?匯編語言偽指令
總結
以上是生活随笔為你收集整理的汇编语言布尔表达式(NOT、AND、OR)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++ 函数的引用传递
- 下一篇: 字符在计算机中是如何表示的?