C# & 运算符

        关于运算符建议大家去看官网。我这里只是以我自己的语言记录一下,方便自己查阅。

        一元“&”:运算符返回操作数的地址(要求(unsafe)不安全上下文)。

int a = 1;
var resultc = &a;

        二元“&”:
        为整型和 bool 类型预定义了二进制 & 运算符:
        对于整型,& 计算操作数的逻辑按位“与”,相同位上,当且仅当两个操作数都为1时,结果才为1,其它都是0;注意0&0还是0,不是1.

int a = 3;
int b = 1;

int result = a&b;//3二进制是00…0011,1二进制是00…001,和3进行比较,&结果是二进制00…001。最终结果转为int就是1.

a = 5; b = 2;
result = a & b;//5二进制是00…00101,2二进制是00…0010.按位与运算结果是二进制数00…00.int型result=0.

        对于 bool 操作数,& 计算操作数的逻辑“与”;也就是说,当且仅当两个操作数均为 true 时,结果才为 true,其它的都是false。从结果上看,和&&一样,但是无短路。看下面例子

static void Main(string[] args)
    {
        Console.WriteLine("regular AND:");
        Console.WriteLine("result is {0}", Method1() & Method2());
        Console.WriteLine("short-circuit AND:");
        Console.WriteLine("result is {0}", Method1() && Method2());


        Console.ReadLine();
    }

    static bool Method1()
    {
        Console.WriteLine("Method1 called");
        return false;
    }

    static bool Method2()
    {
        Console.WriteLine("Method2 called");
        return true;
    }

//输出
//regular AND:
//Method1 called
//Method2 called
//result is False
//short-circuit AND:
//Method1 called
//result is False

        “|”运算符和“&”很类似吧,一个与,一个或,自己动手研究一下吧。还有一个“^",异或.

        下面是应用

/// 
/// 将X的第Y位置为1
/// 
/// 
/// 
/// 
static int Method1(int x, int y)
{
    return x |= (1 << (y-1));
}

/// 
/// 将X的第Y位置为0
/// 
/// 
/// 
/// 
static int Method2(int x, int y)
{
    return x &= ~(1 << (y - 1));
}
/// 
/// X的第Y位是否为1
/// 
/// 
/// 
/// 
static bool Method3(int x, int y)
{
    return (x &(1 << (y - 1)))>0;
}
/// 
/// 将X的第Y位是否为0
/// 
/// 
/// 
/// 
static bool Method4(int x, int y)
{
    return (x & (1 << (y - 1))) == 0;
}


 

你可能感兴趣的:(C#,c#,1024程序员节)