^(插入符号)运算符在Java中起什么作用?
当我尝试这样做时:
int a = 5^n;
...它给我:
当n = 5时,返回0 当n = 4时,返回1 当n = 6时,返回3
...所以我猜它不会取幂。但那是什么呢?
^(插入符号)运算符在Java中起什么作用?
当我尝试这样做时:
int a = 5^n;
...它给我:
当n = 5时,返回0 当n = 4时,返回1 当n = 6时,返回3
...所以我猜它不会取幂。但那是什么呢?
当前回答
很多人已经解释了它是什么以及如何使用它,但除了显而易见的,你可以使用这个运算符来做很多编程技巧,比如
对布尔数组中的所有元素进行XORing会告诉你数组中是否有奇数个真元素 如果你有一个数组,所有数字都重复偶数次,只有一个数字重复奇数次,你可以通过XORing所有元素找到它。 不使用临时变量交换值 寻找在1到n范围内缺失的数字 对通过网络发送的数据进行基本验证。
很多这样的技巧可以使用比特明智的操作符,有趣的话题来探索。
其他回答
在Python等其他语言中,您可以执行10**2=100,尝试一下。
正如其他人所说,这是按位异或。如果你想求一个数字的给定幂,请使用Math。Pow (a, b)这里a是数字,b是幂。
作为其他答案的补充,值得一提的是,插入操作符也可以与布尔操作数一起使用,它返回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
异或运算符规则
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