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

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

        下面是应用

/// <summary>
/// 将X的第Y位置为1
/// </summary>
/// <param name="x"></param>
/// <param name="place"></param>
/// <returns></returns>
static int Method1(int x, int y)
{
    return x |= (1 << (y-1));
}

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


 

  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值