11
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

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

4

4 回答 4

20

XOR 告诉每个位是否不同。

1 异或 1 = 0
1 异或 0 = 1
0 异或 1 = 1
0 异或 0 = 0

换句话说,“一个但不是两个”

0011 异或 0101 = 0110

于 2013-05-20T04:51:47.823 回答
10

BITWISE INCLUSIVE OR (|) 表示正常运算,

BITWISEE 异或 (^) 表示或运算

于 2013-12-26T05:07:25.143 回答
3

第三个是异或运算(Xclusive-OR)

它说,OR 应该是排他性的:其中相似的将是 False(0),而不同的将是 True(1)。

所以二进制的 12 是 1100

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

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

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

于 2013-05-20T04:56:03.533 回答
1

异或 ( XOR) 定义为:

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

也就是说,0当两个值相同时,1如果它们不同的话。

因此,给定两个完全相等的位模式,每个 XORed 位将评估为0,因为每个位要么1在两个位置上,要么0在两个位置上。

于 2013-05-20T04:54:17.763 回答