二进制位运算解决状态值

static void Main(string[] args)
{
int i1 = 1;
int i2 = 2;
int i3 = 4;
int i4 = 8;

int j1 = 16;
int j2 = 32;
int j3 = 64;
int j4 = 128;

int z1 = 256;
int z2 = 512;
int z3 = 1024;
int z4 = 2048;

int t1 = 4096;
int t2 = 4096*2;
int t3 = 4096 * 2*2;
int t4 = 4096 * 2 * 2 * 2;
// 1//第1个属性第一个状态
// 10//第1个属性第二个状态
// 100
// 1000
// 10000//第2个属性第一个状态
//100000
int temp = i1 |j1|z1|t1;//1000100010001,4个属性均取第一个状态
//身份证未上传 1
//身份证待审核 10
//身份证未未通过 100
//身份证待通过 1000
//执照未上传 10000
//。。。。
//即把所有放在一个

if ((temp & i1) == i1)//temp&i1 最后一个为真,结果是1,故相等
{
temp = temp&(~i1);//取反~i1,1000100010001&11111111111111111111111111111110,将最低一位置零
temp = temp | i2;//设置其为 第1个属性第二个状态
}
}

原文地址:https://www.cnblogs.com/zhoudelun/p/8031704.html