布林代數
邏輯運算
& 位元與運算(AND)
位元與運算符將兩個數字的每個位元進行比較。如果兩個位元都為1,則結果為1;否則為0。
| A | B | A & B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
例如: 5 & 3 = 1 (二進制:0101 & 0011 = 0001)
範例
python
a = 5
b = 3
c = a & b
print(c) # 1| 位元或運算(OR)
位元或運算符將兩個數字的每個位元進行比較。如果至少一個位元為1,則結果為1;否則為0。
| A | B | A | B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
例如: 5 | 3 = 7 (二進制:0101 | 0011 = 0111)
範例
python
a = 5
b = 3
c = a | b
print(c) # 7^ 位元異或運算(XOR)
位元異或運算符將兩個數字的每個位元進行比較。如果兩個位元不同,則結果為1;否則為0。
| A | B | A ^ B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
例如: 5 ^ 3 = 6 (二進制:0101 ^ 0011 = 0110)
範例
python
a = 5
b = 3
c = a ^ b
print(c) # 6~ 位元反轉運算(NOT)
位元反轉運算符將數字的每個位元進行反轉。0變成1,1變成0。
| A | ~A |
|---|---|
| 0 | 1 |
| 1 | 0 |
例如: ~5 = -6 (二進制:~0101 = 1010,補碼表示法)
範例
python
a = 5
c = ~a
print(c) # -6布林代數定律
| 名稱 | AND | OR |
|---|---|---|
| 交換律 (Commutative Law) | ||
| 結合律 (Associative Law) | ||
| 分配律 (Distributive Law) | ||
| 同一律 (Identity Law) | ||
| 補數律 (Complement Law) | ||
| 德摩根定律 (De Morgan's Laws) |
範例
布林函數的化解
吸收律 (Absorption Law)
範例1
證明:
x + xy =
=
=
=
範例2
證明:
<< 左移運算(Left Shift)
左移運算符將所有位元向左移動指定的位數,右側補0。
| A | A << 1 |
|---|---|
| 0 | 0 |
| 1 | 2 |
| 2 | 4 |
| 3 | 6 |
| 4 | 8 |
| 5 | 10 |
例如: 5 << 1 = 10 (二進制:0101 << 1 = 1010)
範例
python
a = 5
c = a << 1
print(c) # 10>> 右移運算(Right Shift)
右移運算符將所有位元向右移動指定的位數,左側補符號位。
| A | A >> 1 |
|---|---|
| 0 | 0 |
| 1 | 0 |
| 2 | 1 |
| 3 | 1 |
| 4 | 2 |
| 5 | 2 |
例如: 5 >> 1 = 2 (二進制:0101 >> 1 = 0010)
範例
python
a = 5
c = a >> 1
print(c) # 2