Visual Basic 位运算符

位操作是程序设计中对位模式按位或二进制数的一元和二元操作。

前面已经讨论了按位运算符,移位运算符对二进制值执行移位操作。在进入移位运算符之前,让我们了解位操作。

按位运算符处理位并执行逐位操作。 &,| 和 ^ 的 true 值表如下:

pqp & qp | qp ^ q
00000
01011
11110
10011

假设 A = 60B = 13 如果以二进制格式表示,它们将如下所示:

  1. A = 0011 1100
  2. B = 0000 1101
  3. -----------------
  4. A&B = 0000 1100
  5. A|B = 0011 1101
  6. A^B = 0011 0001
  7. ~A = 1100 0011

前面已经看到 VB 支持的按位运算符是: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 中所有可用的按位运算符:

  1. Module BitwiseOp
  2. Sub Main()
  3. Dim a As Integer = 60 ' 60 = 0011 1100
  4. Dim b As Integer = 13 ' 13 = 0000 1101
  5. Dim c As Integer = 0
  6. c = a And b ' 12 = 0000 1100 '
  7. Console.WriteLine("Line 1 - Value of c is {0}", c)
  8. c = a Or b ' 61 = 0011 1101 '
  9. Console.WriteLine("Line 2 - Value of c is {0}", c)
  10. c = a Xor b ' 49 = 0011 0001 '
  11. Console.WriteLine("Line 3 - Value of c is {0}", c)
  12. c = Not a ' -61 = 1100 0011 '
  13. Console.WriteLine("Line 4 - Value of c is {0}", c)
  14. c = a << 2 ' 240 = 1111 0000 '
  15. Console.WriteLine("Line 5 - Value of c is {0}", c)
  16. c = a >> 2 ' 15 = 0000 1111 '
  17. Console.WriteLine("Line 6 - Value of c is {0}", c)
  18. Console.ReadLine()
  19. End Sub
  20. End Module

结果如下:

  1. Line 1 - Value of c is 12
  2. Line 2 - Value of c is 61
  3. Line 3 - Value of c is 49
  4. Line 4 - Value of c is -61
  5. Line 5 - Value of c is 240
  6. Line 6 - Value of c is 15

分类导航