按位包含或与独占或在java中的区别

时间:2013-05-20 04:49:14

标签: java operators bitwise-operators

public class Operators {

    public static void main(String[] args) {        
        int a = 12;

    System.out.println("Bitwise AND:"+(12&12));
    System.out.println("Bitwise inclusive OR:"+(12|12));
    System.out.println("Bitwise exclusive OR:"+(12^12));

    }
}

OUTPUT:

Bitwise AND:12
Bitwise inclusive OR:12
Bitwise exclusive OR:0

我理解前两个,但不是第三个。

5 个答案:

答案 0 :(得分:17)

XOR告诉每个位是否不同。

1 XOR 1 = 0
1 XOR 0 = 1
0 XOR 1 = 1
0 XOR 0 = 0

换句话说“要么不是两个都”

0011 XOR 0101 = 0110

答案 1 :(得分:6)

BITWISE INCLUSIVE OR(|)表示正常操作,

BITWISEE ExCLUSIVE OR(^)表示 xor 操作

答案 2 :(得分:3)

第三个是XOR操作(Xclusive-OR)

它说,或者应该是唯一的: 其中类似的将是假(0) 和不相似的将是真(1)。

所以十二进制中的12将是1100

所以,在这里执行按位异或:

  1 1 0 0
  1 1 0 0
---------
  0 0 0 0
---------

每列都有相同的数字,要么都是1,要么两者都是0 XOR说,两者都应该不同。因此全部为零

答案 3 :(得分:1)

Exclusive或(XOR)定义为:

0 ^ 0 = 0
1 ^ 0 = 1
0 ^ 1 = 1
1 ^ 1 = 0

也就是说,当两个值相同时为0,如果它们不同则为1

因此,假设两个位模式完全相等,每个XOR位将评估为0,因为每个位在两个位置都有1,或者在两个位置都有0

答案 4 :(得分:-2)

因为您使用的运算符是按位运算符,所以转换操作数 比特然后操作员对它们采取行动。

这里12 - > 1100以二进制数字(位)

和&(AND),|(OR)和^(异或或异或)运算符的运算如下:

A B& | ^

0 0 0 0 0

0 1 0 1 1

1 0 0 1 1

1 1 1 1 0

所以当你表演12 ^ 12时:

A = 1100

B = 1100

A B ^

1 1 0

1 1 0

0 0 0

0 0 0

和0000 - >十进制系统中的0

因此你在第三个答案中得到12 ^ 12 = 0