逻辑与运算:&
参加运算的两个值转换成二进制然后按位进行与运算
运算规则:0&0=0,0&1=0,1&0=0,1&1=1
实例: int a = 3; int b = 4; Console.WriteLine(a & b);
计算方式:
0011 & 0100=0000=0
可以解决的问题
例如:斗地主中的花色和牌的大小,使用两个16进制数表示一张牌:001(红桃a),011(黑桃a),如果想要获得点数只需要牌与上一个0*0f,就可以了.
逻辑或运算:|
参加运算的两个值转换成二进制然后按位进行或运算
运算规则: 0|0=0 , 0|1=1 , 1|0=1 , 1|1=1
实例:int a = 3; int b = 4; Console.WriteLine(a | b);
计算方式:
0011 | 0100=0111=7
可以解决的实际问题
暂时想不到具体的实例
逻辑异或运算:^
参加运算的两个值转换成二进制之后进行异或运算
**运算规则: 0^0=0, 0 ^ 1=1,1 ^0=1, 1 ^ 1=0
实例:int a = 3; int b = 4; Console.WriteLine(a ^ b);
计算方式:
0011 ^ 0100=0111=7
可以实际结局的问题
不使用第三个变量的情况下互换两个值
int a = 3; int b = 4; a = a ^ b; b = a ^ b; a = a ^ b;
运算方式:
a= 0011;
b=0100;
a=a^b=0011 ^ 0100=0111;
b=a^b= 0111 ^ 0100=0011
a=a^b=0111 ^ 0011=0100
逻辑取反运算:~或者not
参加运算的两个值转换成二进制之后按位取反
运算规则:0取反=1,1取反=0