//&符号是and,与,一个为0都是0,全部为1才是1
//1&1=1,1&0=0,1与任何数都是任何数
//0&1=0,0&0=0,0与任何数都是0
var num1 = 0b_1010_1010_1010;
var num2 = 0b_1111_0000; //保留num1二进制中4-7位
Console.WriteLine(Convert.ToString(num1 & num2, 2)); //0b_1010_0000
//|符号是or,或,一个为1即为1,全部为0才是0
//1|1=1,1|0=1,1或任何数都是1
//0|1=1,0|0=0,0或任何数都是任何数
num1 = 0b_1010_1010;
num2 = 0b_0101;
num1 <<= 4; //左移4位,变成0b_1010_1010_0000
//将num2附加到num1低位上
Console.WriteLine(Convert.ToString(num1 | num2, 2)); //0b_1010_1010_0101
//^符号是xor,异或,两者不相等为1,相等则为0
//1^1=0,1^0=1,1异或任何数都是不是任何数
//0^1=1,0^0=0,0异或任何数都是任何数
//只用它进行过异或检验
//0b_1010_1010_0000
//0b_0101
Console.WriteLine(Convert.ToString(num1 ^ num2, 2)); //0b_1010_1010_0101