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

当我尝试这样做时:

int a = 5^n;

...它给我:

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

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


当前回答

它是XOR位操作符。

其他回答

^是二进制(以2为底)异或,而不是取幂(不能作为Java运算符)。关于取幂,请参见java.lang.Math.pow()。

它是java中的位xor运算符,当不同值时结果为1(即1 ^ 0 = 1),当相同值时结果为0(即0 ^ 0 = 0)。

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

作为其他答案的补充,值得一提的是,插入操作符也可以与布尔操作数一起使用,它返回true(当且仅当)操作数不同:

    System.out.println(true ^ true); // false
    System.out.println(true ^ false); // true
    System.out.println(false ^ false); // false
    System.out.println(false ^ true); // true

异或运算符规则=>

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