vb6 邏輯運算 & 位元運算
★ 邏輯運算
VB6 提供了六個邏輯運算子:Not、And、Or、Xor、Imp、Eqv
各個運算子的真值表如下所示:
┌───┬───┬───┬───┬───┬───┐
│ Not  │True  │False │ Null │  0  │  1  │
├───┼───┼───┼───┼───┼───┤
│      │False │True  │ Null │  1  │  0  │
└───┴───┴───┴───┴───┴───┘
┌───┬───┬───┬───┬───┬───┐
│ And  │ True │False │ Null │  0  │  1  │
├───┼───┼───┼───┼───┼───┤
│ True │True  │False │ Null │  0  │  1  │
├───┼───┼───┼───┼───┼───┤
│False │False │False │ False│  0  │  0  │
├───┼───┼───┼───┼───┼───┤
│ Null │Null  │False │ Null │  0  │ Null │
├───┼───┼───┼───┼───┼───┤
│  0  │  0  │  0  │  0  │  0  │  0  │
├───┼───┼───┼───┼───┼───┤
│  1  │  1  │  0  │ Null │  0  │  1  │
└───┴───┴───┴───┴───┴───┘
┌───┬───┬───┬───┬───┬───┐
│  Or  │ True │False │ Null │  0  │  1  │
├───┼───┼───┼───┼───┼───┤
│ True │ True │False │ True │  -1  │  -1  │
├───┼───┼───┼───┼───┼───┤
│False │ False│False │ Null │  0  │  1  │
├───┼───┼───┼───┼───┼───┤
│ Null │ True │ Null │ Null │ Null │  1  │
├───┼───┼───┼───┼───┼───┤
│  0  │  -1  │  0  │ Null │  0  │  1  │
├───┼───┼───┼───┼───┼───┤
│  1  │  -1  │  1  │  1  │  1  │  1  │
└───┴───┴───┴───┴───┴───┘
┌───┬───┬───┬───┬───┬───┐
│ Xor  │ True │False │ Null │  0  │  1  │
├───┼───┼───┼───┼───┼───┤
│ True │False │ True │ Null │  -1  │  -2  │
├───┼───┼───┼───┼───┼───┤
│False │ True │False │ Null │  0  │  1  │
├───┼───┼───┼───┼───┼───┤
│ Null │ Null │ Null │ Null │ Null │ Null │
├───┼───┼───┼───┼───┼───┤
│  0  │  -1  │  0  │ Null │  0  │  1  │
├───┼───┼───┼───┼───┼───┤
│  1  │  -2  │  1  │ Null │  1  │  0  │
└───┴───┴───┴───┴───┴───┘
┌───┬───┬───┬───┬───┬───┐
│ Imp  │ True │False │ Null │  0  │  1  │只有 Imp 運算子會因先後順序
├───┼───┼───┼───┼───┼───┤的不同而得到不同的結果
│ True │ True │False │ Null │  0  │  1  │
├───┼───┼───┼───┼───┼───┤
│False │ True │ True │ True │  -1  │  -1  │
├───┼───┼───┼───┼───┼───┤
│ Null │ True │ Null │ Null │ Null │  1  │
├───┼───┼───┼───┼───┼───┤
│  0  │  -1  │  -1  │  -1  │  -1  │  -1  │
├───┼───┼───┼───┼───┼───┤
│  1  │  -1  │  -2  │  -2  │  -2  │  -1  │
└───┴───┴───┴───┴───┴───┘
┌───┬───┬───┬───┬───┬───┐
│ Eqv  │ True │False │ Null │  0  │  1  │
├───┼───┼───┼───┼───┼───┤
│ True │ True │False │ Null │  0  │  1  │
├───┼───┼───┼───┼───┼───┤
│False │False │ True │ Null │  -1  │  -2  │
├───┼───┼───┼───┼───┼───┤
│ Null │ Null │ Null │ Null │ Null │ Null │
├───┼───┼───┼───┼───┼───┤
│  0  │  0  │  -1  │ Null │  -1  │  -2  │
├───┼───┼───┼───┼───┼───┤
│  1  │  1  │  -2  │ Null │  -2  │  -1  │
└───┴───┴───┴───┴───┴───┘
★ 位元運算 (以下對照 c 語言的位元運算作說明)
VB6 並沒有位元運算子,但邏輯運算子有相同的效果。
例如:65 And 5 = 1
65 的二進位值為 0100 0001
 5 的二進位值為 0000 0101
--------------------------
And  運算結果為 0000 0001
不過邏輯運算子只能使用在數字、布林、Null上,不能對字串(字元)進行位元運算。
如果要對字元進行運算,則必須將其轉換成數值再作位元運算。
例如:
VB6                 C++
Asc("A") And 5      'A' & 5
Asc("A") Or 5       'A' | 5
Asc("A") Xor 5      'A' ^ 5
Asc("A") * 2        'A' << 1
Asc("A") / 4        'A' >> 2
--
人若無星爺,跟條鹹魚有何分別?
--
※ 發信站: 批踢踢實業坊(ptt.cc) 
◆ From: 210.58.156.43
推
61.57.108.167 04/05, , 1F
61.57.108.167 04/05, 1F
Visual_Basic 近期熱門文章
PTT數位生活區 即時熱門文章