位运算是将数据先转化为二进制数补码形式,再逐位(bit)按规则计算。
“按位与”运算符“&”,规则:全1则1,否则为0“按位或”运算符“|”,规则:全0则0,否则为1。“按位非”运算符“~”,规则:遇1则0,遇0则1。“按位异或”运算符“^”,规则:相同为0,不同为1。值得一提的是,按位异或运算是可逆的,即如果对某个数据a进行两次相同的异或运算,则结果会还原为a。
例如:3 ^ 5 = 6;6 ^ 5 = 3;
逻辑运算又称布尔运算。常用0、1或者true、false来表示两者的关系。
运算符
用法
含义
&&
op1&&op2
逻辑与
||
op1||op2
逻辑或
!
!op
逻辑非
op1
Op2
op1&&op2
op1||op2
!op1
true
true
true
true
false
true
false
false
true
false
false
true
false
true
true
false
false
false
false
true
以以下代码为例:
public class Test{ public static void main(String [] args){ int a=10; int b=10; if(((a=0)==0)|((b=0)==0)){ System.out.println(b); } int x=10; int y=10; if(((x=0)==0)||((y=0)==0)){ System.out.println(y); } } }输出结果为:0 10
由于要进行按位或运算,所以先计算|左右两边的值,即true|true,所以输出结果为0。
逻辑或中有一个为真即成立,Java程序不会执行(y = 0)==0,所以结果为10。