在java中的运算符中,比较难得就是这个位异或运算符以及非运算符
位异或运算(^)
System.out.println(1 ^7);//亦或
步骤:先将1和7转化为二进制原码,
1的原码:0000 0001
7的原码:0000 0111
比较1和7的位数是否相同,如果相同,则为0 不相同,则为1
所以比较后的原码为:
0000 0001
0000 0111
0000 0110=6
位非运算符(~)
有一个简单的技巧,不用考虑原码问题
System.out.println(~-45);//非 加以取反
加1取反的意思:-45+1=-44,然后对-44取相反数,就是答案