在前面已经讨论了位运算符,移位运算符对二进制值执行移位操作。在进入移位运算符之前,让我们了解位操作。
按位运算符处理位并执行逐位操作。 &
,|
和^
的真值表如下:
假设A = 60
;而B = 13
; 如果以二进制格式表示,它们将如下所示:
A = 0011 1100
B = 0000 1101
-----------------
A&B = 0000 1100
A|B = 0011 1101
A^B = 0011 0001
~A = 1100 0011
前面已经看到VB.Net支持的按位运算符是:And
,Or
,Xor
和Not
。移位运算符分别是:>>
和<<
表示左移和右移。
假设变量A = 60
,变量B = 13
,那么:
运算符 | 描述 | 说明 |
---|---|---|
And |
如果在两个操作数中都存在,则按位AND 运算符会复制结果。 |
(A AND B) 结果为:12 , 也就是:0000 1100 |
Or |
二进制或运算符复制一个位,如果它存在于任一操作数。 | (A Or B) 结果为 61 , 也就是:0011 1101 |
Xor |
如果二进制XOR 运算符被设置在一个操作数中,但它们不能同时被二进制XOR 运算符复制。 |
(A Xor B) 结果为:49 ,也就是:0011 0001 |
Not |
二进制补码运算符是一元运算符,具有“翻转”位的作用。 | (Not A ) 结果为:-61 ,也就是:1100 0011 |
<< |
二进制左移运算符。左操作数值左移由右操作数指定的位数。 | A << 2 结果为:240 , 也就是:1111 0000 |
>> |
二进制右移运算符。左操作数值右移由右操作数指定的位数。 | A >> 2 结果为:15 , 也就是:0000 1111 |
示例
尝试下面的例子来理解VB.Net中所有可用的按位运算符,文件:BitwiseOp.vb:
Module BitwiseOp
Sub Main()
Dim a As Integer = 60 ' 60 = 0011 1100
Dim b As Integer = 13 ' 13 = 0000 1101
Dim c As Integer = 0
c = a And b ' 12 = 0000 1100 '
Console.WriteLine("Line 1 - Value of c is {0}", c)
c = a Or b ' 61 = 0011 1101 '
Console.WriteLine("Line 2 - Value of c is {0}", c)
c = a Xor b ' 49 = 0011 0001 '
Console.WriteLine("Line 3 - Value of c is {0}", c)
c = Not a ' -61 = 1100 0011 '
Console.WriteLine("Line 4 - Value of c is {0}", c)
c = a << 2 ' 240 = 1111 0000 '
Console.WriteLine("Line 5 - Value of c is {0}", c)
c = a >> 2 ' 15 = 0000 1111 '
Console.WriteLine("Line 6 - Value of c is {0}", c)
Console.ReadLine()
End Sub
End Module
执行上面示例代码,得到以下结果 -
F:\worksp\vb.net\operators>vbc BitwiseOp.vb
F:\worksp\vb.net\operators>BitwiseOp.exe
Line 1 - Value of c is 12
Line 2 - Value of c is 61
Line 3 - Value of c is 49
Line 4 - Value of c is -61
Line 5 - Value of c is 240
Line 6 - Value of c is 15
上一篇:
VB.Net运算符
下一篇:
VB.Net决策结构