VB.Net位移運算子

2019-10-16 23:02:29

在前面已經討論了位運算子,移位運算子對二進位制值執行移位元運算。在進入移位運算子之前,讓我們了解位元運算。

按位元運算子處理位並執行逐位元運算。 |^的真值表如下:

假設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支援的按位元運算子是:AndOr,XorNot。移位運算子分別是:>><<表示左移和右移。

假設變數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