C# 按位和位移位运算符

csharpserver side programmingprogramming更新于 2025/9/24 15:14:00

按位运算符作用于位并执行逐位运算。

下表列出了 C# 支持的按位运算符。假设变量 A 包含 60,变量 B 包含 13 −

运算符
描述
示例
&
如果按位与运算符在两个操作数中都存在该位,则将该位复制到结果中。
(A & B) = 12,即 0000 1100
|
如果按位或运算符在任一操作数中都存在该位,则将该位复制。
(A | B) = 61,即 0011 1101
^
按位异或运算符如果在一个操作数中设置了该位,但不是同时在两个操作数中都设置了该位,则复制该位。
(A ^ B) = 49,即 0011 0001
~
按位二进制补码运算符是一元的,具有"翻转"位的效果。
(~A ) = 61,由于它是有符号二进制数,所以以二进制补码表示为 1100 0011。
<<
按位左移运算符
 将左操作数的值向左移动右操作数指定的位数。
A << 2 = 240,即 1111 0000
>>
按位右移运算符
左操作数的值按右操作数指定的位数向右移动。
A >> 2 = 15,即 0000 1111

示例

以下是展示如何在 C# 中实现按位运算符的示例。

using System;
namespace MyApplication {
   class Program {
      static void Main(string[] args) {
         int a = 60; /* 60 = 0011 1100 */
         int b = 13; /* 13 = 0000 1101 */
         int c = 0;
         // 按位与运算符
         c = a &amp; b; /* 12 = 0000 1100 */
         Console.WriteLine("第 1 行 - c 的值为 {0}", c );
         // 按位或运算符
         c = a | b; /* 61 = 0011 1101 */
         Console.WriteLine("第 2 行 - c 的值为 {0}", c);
         // 按位异或运算符
         c = a ^ b; /* 49 = 0011 0001 */
         Console.WriteLine("第 3 行 - c 的值为 {0}", c);
         // 按位求补运算符
         c = ~a; /*-61 = 1100 0011 */
         Console.WriteLine("第 4 行 - c 的值为 {0}", c);
         // 按位左移运算符
         c = a << 2; /* 240 = 1111 0000 */
         Console.WriteLine("第 5 行 - c 的值为 {0}", c);
         // 按位右移运算符
         c = a >> 2; /* 15 = 0000 1111 */
         Console.WriteLine("第 6 行 - c 的值为 {0}", c);
         Console.ReadLine();
      }
   }
}

输出

第 1 行 - c 的值为 12
第 2 行 - c 的值为 61
第 3 行 - c 的值为 49
第 4 行 - c 的值为 -61
第 5 行 - c 的值为 240
第 6 行 - c 的值为 15

相关文章