^(插入符号)运算符在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
...所以我猜它不会取幂。但那是什么呢?
当前回答
正如其他答案所述,它是“异或”(XOR)操作符。有关Java中位操作符的更多信息,请参见:http://java.sun.com/docs/books/tutorial/java/nutsandbolts/op3.html
其他回答
作为其他答案的补充,值得一提的是,插入操作符也可以与布尔操作数一起使用,它返回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
这是因为使用了异或运算符。
在java或其他语言中,^是位xor, 当然,
10 ^ 1 = 11。 关于逐位操作符的更多信息
有趣的是,Java和c#没有强大的操作符。
正如其他答案所述,它是“异或”(XOR)操作符。有关Java中位操作符的更多信息,请参见:http://java.sun.com/docs/books/tutorial/java/nutsandbolts/op3.html
它是XOR位操作符。
AraK的链接指向了异或的定义,它解释了这个函数如何对两个布尔值工作。
缺少的信息是如何将其应用于两个整数(或整数类型值)。按位异或应用于两个数字中对应的二进制数字对,结果被重新组合成整数结果。
用你的例子:
5的二进制表示是0101。 4的二进制表示是0100。
定义按位异或的一个简单方法是,在两个输入数字不同的地方,结果都是1。
4和5,唯一的区别是在最后一位;所以
0101 ^ 0100 = 0001 (5 ^ 4 = 1).