按位与运算符
运算规则: 同1为1,其他为0 比如:0&0=0 0&1=0 1&0=0 1&1=1
参与比较的两个数: 转化为2进制比较
例如:(12&3)
12------------1100 ;
3------------0011 注意:这里如果位数不够,加0填充;
结果就是-------------0000
然后将二进制转化成为十进制: 0
(12&3)==0
按位或运算符
运算规则: 有1为1,其他为0 比如:0|0=0 0|1=1 1|0=1 1|1=1
参与比较的两个数: 转化为2进制比较
例如:(13|2)
13--------1101
2--------0010 注意:这里如果位数不够,加0填充;
结果是--------1111
转化成为十进制:15
(13|2)==15
异或运算符
运算规则: 相同为0,不同为1 比如:0^0=0 0^1=1 1^0=1 1^1=0
参与比较的两个数: 转化为2进制比较
例如:(15^14)
15---------1111
14---------1110
结果是---------0001
转化成为十进制: 1
(15^14)==1
取反运算符
运算规则: 本身的相反数-1
例如:(~14)
~14-------(-14-1)
结果是:-15
注意:取反运算符的优先级要高于前两位;
例如(12&~6)
要先算~6
~6------(-7)
7-------00000111
7的反码-------11111000
7的补码-------11111001
-7-------11111001
12-------00001100
结果是:------00001000
十进制是:8
(12&~6)==8 可见取反的运算符高于前两位
复合赋值运算符
&= a&=b 相当于 a=a&b
|= a|=b 相当于 a=a|b
^= a^=b 相当于 a=a^b
int a=15;
int b=14;
System.out.println(a^=b); // 1
System.out.println(a); // 1