每次一看到与或运算的题,都知道是考什么点(按二进制位进行相应运算),但是自己一算,就是会算错,加之之前有一篇字符串反转输出的题,也用到了异或运算,那么,今天就讲解下如何记住这三种运算的运算规则。
与运算(&)原则:同为1则为1,否则为0
0&0=0; 0&1=0; 1&0=0; 1&1=1;
4&7: 0000 0100 & 0000 0111 = 0000 0100 结果为4
附:负数与运算按补码形式参加与运算(负数或运算(|)也是按补码运算)
比如说4的原码是
4原码:0000 0100 7原码:0000 0111
4反码:1111 1011 7反码:1111 1000
4补码:1111 1100 7补码:1111 1001
补码=反码+1 反码=补码-1
-4&-7: 1111 1100 & 1111 1001 = 1111 1000(补码) 换算为反码:1111 0111 换为原码:0000 1000 就是-8
public static void main(String[] args) {
System.out.println(4 & 7); // 4
System.out.println(-4 & -7); // -8
System.out.println(4 | 7); // 7
System.out.println(4 ^ 7); // 3
}
或运算(|)原则:只要有1则为1,否则为0
0|0=0; 0|1=1; 1|0=1; 1|1=1;
4|7: 0000 0100 | 0000 0111 = 0000 0111 结果为7
异或运算(^)原则:同0同1都为0,否则为1
0^0=0; 0^1=1; 1^0=1; 1^1=0;
4^7: 0000 0100 ^ 0000 0111 = 0000 0011 结果为3