编辑代码

/*
位运算符

    只对整数进行的运算,整数由bit位构成,将两个或者一个整数的bit位进行操作跟逻辑计算,叫做位运算

    &:与运算符     二者都为1才为1,否则都是0

    |:或运算符     二者其中只要存在一个1,结果就是1

    ^:异或运算符    二者不同,结果为1,否则为0

    ~:取反运算符   将所有bit,0变1   1变0

左移右移运算符

    将一个整数的所有bit位数据,集体向左/右移动一定的位数
    
    << : 左移运算符

    >> : 右移运算符



*/


using System;

public class HelloWorld
{
    public static void Main()
    {
        Console.WriteLine("-------& | ^ ~ 各类位运算-----------");
       int a = 4,b = 6;
       //a = 0100
       //b = 0110

       //a & b = 0100
       //a | b = 0110  = 6
       //a ^ b = 0010  = 2
       //~a    = 1011  = -5
       //~b    = 1001  = -7

       Console.WriteLine("a & b = " + (a & b));

       Console.WriteLine("a | b = " + (a | b));

       Console.WriteLine("a ^ b = " + (a ^ b));

       Console.WriteLine("~a = " + ~a);

       Console.WriteLine("~b = " + ~b);

       Console.WriteLine("---------左移与右移位运算----------");


        //以下两种写法均可运行程序
       int A = 13;
        A = A << 2;
        Console.WriteLine("当前A的数值为: " + A);

        int B = 2;
        Console.WriteLine("B << 2 = " + (B << 2));
        Console.WriteLine("B >> 2 = " + (B >> 2));

        Console.WriteLine("--------左移右移练习题---------");

        const int Num = 13;

        Console.WriteLine("提取Num的低一位数值为:" + (Num & 1));
        Console.WriteLine("提取Num的低二位数值为:" + (Num >> 1 & 1));
        Console.WriteLine("提取Num的第三位数值为:" + (Num >> 2 & 1));
    }
}