📜  C#按位和移位运算符(1)

📅  最后修改于: 2023-12-03 14:40:33.100000             🧑  作者: Mango

C#按位和移位运算符

C#提供了许多按位和移位运算符,这些运算符可用于处理二进制位。在本文中,我们将学习 C# 中可用的按位和移位运算符以及它们的用法。

按位运算符

按位运算符在二进制级别上操作数据。

&(按位与)

& 运算符执行按位与运算。它比较两个操作数的每个对应的位。如果两个位都为 1,则结果为 1。否则,结果为 0。语法如下:

int result = a & b;
|(按位或)

| 运算符执行按位或运算。它比较两个操作数的每个对应的位。如果两个位都为 0,则结果为 0。否则,结果为 1。语法如下:

int result = a | b;
^(按位异或)

^ 运算符执行按位异或运算。它比较两个操作数的每个对应的位。如果两个位不同,则结果为 1。否则,结果为 0。语法如下:

int result = a ^ b;
~(按位求反)

~ 运算符执行按位求反运算。它反转操作数中的每个位。语法如下:

int result = ~a;
移位运算符

移位运算符用于将二进制中的位向左或向右移动。

<<(左移运算符)

<< 运算符将操作数的位向左移动指定数量的位数。语法如下:

int result = a << b;
>>(右移运算符)

运算符将操作数的位向右移动指定数量的位数。语法如下:

int result = a >> b;
示例

以下示例演示了使用按位和移位运算符:

using System;

class Program
{
    static void Main()
    {
        int a = 10; // 1010
        int b = 15; // 1111
        
        //按位与运算
        int and = a & b; // 1010 & 1111 = 1010
        Console.WriteLine("按位与运算结果是 " + and);

        //按位或运算
        int or = a | b; // 1010 | 1111 = 1111
        Console.WriteLine("按位或运算结果是 " + or);
        
        //按位异或运算
        int xor = a ^ b; // 1010 ^ 1111 = 0101
        Console.WriteLine("按位异或运算结果是 " + xor);
        
        // 按位求反运算
        int not = ~a; // ~1010 = -(1011) = -11
        Console.WriteLine("按位求反运算结果是 " + not);

        // 左移运算
        int leftShift = a << 2; // 1010 << 2 = 101000
        Console.WriteLine("左移运算结果是 " + leftShift);

        // 右移运算
        int rightShift = b >> 2; // 1111 >> 2 = 0011
        Console.WriteLine("右移运算结果是 " + rightShift);
    }
}

输出:

按位与运算结果是 10
按位或运算结果是 15
按位异或运算结果是 5
按位求反运算结果是 -11
左移运算结果是 40
右移运算结果是 3

这里的输出结果可能与您在计算机上运行时的结果略有不同,因为输出可能受操作系统、C# 编译器的版本以及 .NET Framework 版本的影响。