作者fumizuki (小狮)
看板Visual_Basic
标题vb6 逻辑运算 & 位元运算
时间Tue Apr 5 15:52:07 2005
★ 逻辑运算
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
1F:推 JJss:太赞了 @__@ 61.57.108.167 04/05