vb.net中位运算符使用说明
Not
:对 Boolean 表达式执行逻辑求反,或对数值表达式执行按位求反。
or
:用于对两个 Boolean 表达式执行逻辑析取,或对两个数值执行按位析取。
xor :对两个 Boolean 表达式执行逻辑异或运算,或对两个数值表达式执行按位异或运算。
特别注意:当and或其他用于位运算符时,必须用括号优先括起来,进行运算,否则会有歧义如:
if(a1 and a2 >0)
then ‘有可能执行的不是位运算,而是逻辑运算,导致异常,而
then ‘有可能执行的不是位运算,而是逻辑运算,导致异常,而
if((a1 and a2)>0)
then ‘则可以正常进行位运算。
then ‘则可以正常进行位运算。
使用案例:
设置某一位值为1
mLTDExtendStatus = mLTDExtendStatus Or pOneEnum
x = y or 2 ‘表示第二位的值设为1
设置某一位值为0
方法一:
mLTDExtendStatus = mLTDExtendStatus And (Not pOneEnum)
x = y and (not 2) ‘表示把y的第二位的值设为0
方法二:
mLTDExtendStatus = mLTDExtendStatus And (Int32.MaxValue – pOneEnum) ‘Int32.MaxValue – pOneEnum起到取反效果
方法三:
if((mLTDExtendStatus and pOneEnum)>0) then ‘这种方法要先检查,确保指定位置的值为1,否则得到错语的值
mLTDExtendStatus = mLTDExtendStatus xor pOneEnum
end if