C# IF((768 & 32) ==32)true & 怎么运算的 true

1个回答

  • & 是 位与 符号;百度 "位与"

    这种条件表达式一般是用做某种设置的判断;

    该设置有多条,且可多选,便可以用这种方式;

    其特点是:

    设置中每一个选项的值都是2的N次冥,其实就是2进制中每一位上所代表的值, 如

    0 1 2 4 8 16 32 64 128(分别对应2进制中第一位到第八位的值)

    这样如果你任意做了多选; 因为在2进制中这些数是互不干扰的; 所以可以直接用 位或 做组合,用位与做判断;

    例子:

    // 我一般用这种数据,会把他们做成枚举

    enum Setting

    {

    NONE = 0,ST1 = 1, ST2 = 2, ST3=4, ST4=8

    }

    // 赋值,可用位或将多个选项组合在一起

    Setting s = Setting.ST1 | Setting.ST2.2;

    // 判断,逐个判断(既然用这种数据结构,一般该设置就是允许多选的,否则没必要)

    if(s & Setting.ST1 == Setting.ST1)

    {

    // 设置了ST1 要做的事

    }

    if(s & Setting.ST2 == Setting.ST2)

    {

    // 设置了ST2 要做的事

    }

    if(s & Setting.ST3 == Setting.ST3)

    {

    // 设置了ST3 要做的事

    }

    if(s & Setting.ST4 == Setting.ST4)

    {

    // 设置了ST4 要做的事

    }