一.常用位运算符介绍

常见的位运算符包括:

  • << 左移
  • >> 右移
  • & 位与
  • | 位或
  • ^ 位异或
  • ~ 位非

一.<<左移运算符

作用:二进制位向左移动,右侧补0。

记忆方法:a 相当于 a × 2^n。

示例:

2 << 2  // 2 * 2^2 = 8,二进制 10 -> 1000
23 << 3 // 23 * 2^3 = 184

二.>> 右移运算符

作用:二进制位向右移动,左侧补0(正数)或1(负数)。

记忆方法:a >> n 相当于 a / 2^n,结果向下取整。

示例:

2 >> 2  // 2 / 2^2 = 0,二进制 0000 0010 -> 0000 0000

三.& 位与运算符

规则:对应位都为1时结果才为1

示例:

1000 & 1010 // 结果为1000(二进制),即8(十进制)

四.| 位或运算符

规则:只要有一位为1,结果就是1

示例:

1000 | 1010 // 结果为1010(二进制),即10(十进制)

五.^ 位异或运算符

规则:相同为0,不同为1

1 ^ 1 = 0
0 ^ 0 = 0
0 ^ 1 = 1
1 ^ 0 = 1
1000 ^ 1010 // 结果为0010(二进制),即2(十进制)

六.~ 位非运算符

规则:按位取反,0变1,1变0。

记忆方法:~a = -(a) - 1

~8
// 8的二进制(32位):00000000 00000000 00000000 00001000
// 取反:11111111 11111111 11111111 11110111
// 转换为十进制:-9
~(-8) = 7

注意事项

  • 作用对象必须是数值类型(整数)。
  • 运算结果也是数值类型。
  • 位运算思路与逻辑运算符类似,1表示true,0表示false。

代码示例

// 作用对象是:数,二进制数
// <<(左移位), >>(右移位), &(与运算), |(或运算), ^(异或), ~(非)

Debug.Print(3 << 2); // 0000 0011 << 2 => 0000 1100 => 12
Debug.Print(5 >> 2); // 0000 0101 >> 2 => 0000 0001 => 1
Debug.Print(3 & 5);  // 0000 0011 & 0000 0101 => 0000 0001 => 1
Debug.Print(3 | 5);  // 0000 0011 | 0000 0101 => 0000 0111 => 7
Debug.Print(3 ^ 5);  // 0000 0011 ^ 0000 0101 => 0000 0110 => 6
Debug.Print(~8);     // ~0000 1000 => 1111 0111(补码)=> -9

更多推荐