与:&
两个操作数都为1,结果才为1,否则结果为0
public static void main(String[] args) {
System.out.println(Integer.toBinaryString(5));//101
System.out.println(Integer.toBinaryString(4));//100
System.out.println(Integer.toBinaryString((5 & 4))); //100
System.out.println(5 & 4); //4
}
或:|
两个操作数只有一个为1,那么结果就是1,否则为0
public static void main(String[] args) {
System.out.println(Integer.toBinaryString(5));//101
System.out.println(Integer.toBinaryString(4));//100
System.out.println(Integer.toBinaryString((5 | 4))); //101
System.out.println(5 | 4); //5
}
异或:^
相同则结果为0,不同则结果为1
特性
- 任何数于0异或为任何数;
- 相同的数异或为0。
public static void main(String[] args) {
System.out.println(Integer.toBinaryString(5));//101
System.out.println(Integer.toBinaryString(4));//100
System.out.println(Integer.toBinaryString((5 ^ 4))); //1
System.out.println(5 ^ 4); //1
}
应用:出现一次的数字
非:~
如果位为0,结果是1,如果位为1,结果是0
特点:
- ~为单目运算符
public static void main(String[] args) {
System.out.println(Integer.toBinaryString(5));//101
//int类型占4Byte(位),共32个Bit(字节)
System.out.println(Integer.toBinaryString(( ~ 5))); //1111 1111 1111 1111 1111 1111 1111 1010
}