^(插入符号)运算符在Java中起什么作用?

当我尝试这样做时:

int a = 5^n;

...它给我:

当n = 5时,返回0 当n = 4时,返回1 当n = 6时,返回3

...所以我猜它不会取幂。但那是什么呢?


当前回答

异或运算符规则

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

位运算符对位进行操作,并执行逐位操作。假设a = 60, b = 13;现在,在二进制格式中,它们将如下所示

a = 0011 1100

b = 0000 1101



a^b ==> 0011 1100  (a)
        0000 1101  (b)
        -------------  XOR
        0011 0001  => 49

(a ^ b) will give 49 which is 0011 0001

其他回答

很多人已经解释了它是什么以及如何使用它,但除了显而易见的,你可以使用这个运算符来做很多编程技巧,比如

对布尔数组中的所有元素进行XORing会告诉你数组中是否有奇数个真元素 如果你有一个数组,所有数字都重复偶数次,只有一个数字重复奇数次,你可以通过XORing所有元素找到它。 不使用临时变量交换值 寻找在1到n范围内缺失的数字 对通过网络发送的数据进行基本验证。

很多这样的技巧可以使用比特明智的操作符,有趣的话题来探索。

它是java中的位异或运算符,当一个数字以二进制形式写成时,它的结果是1表示不同的位值(即1 ^ 0 = 1),0表示相同的位值(即0 ^ 0 = 0)。

例:-

用你的例子:

5的二进制表示是0101。 4的二进制表示是0100。

定义按位异或的一个简单方法是,在两个输入数字不同的地方,结果都是1。

0101 ^ 0100 = 0001 (5 ^ 4 = 1).

它是按位异或,Java没有求幂运算符,你必须使用Math.pow()来代替。

异或运算符规则

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

位运算符对位进行操作,并执行逐位操作。假设a = 60, b = 13;现在,在二进制格式中,它们将如下所示

a = 0011 1100

b = 0000 1101



a^b ==> 0011 1100  (a)
        0000 1101  (b)
        -------------  XOR
        0011 0001  => 49

(a ^ b) will give 49 which is 0011 0001

异或运算符规则=>

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

4、5和6的二进制表示:

4 = 1 0 0 
5 = 1 0 1
6 = 1 1 0

现在,对5和4执行异或操作:

     5 ^ 4 => 1  0  1   (5)
              1  0  0   (4)
            ----------
              0  0  1   => 1

同样的,

5 ^ 5 => 1   0   1    (5)
         1   0   1    (5)
       ------------
         0   0   0   => (0)


5 ^ 6 => 1   0   1  (5)
         1   1   0  (6)
        -----------
         0   1   1  => 3