我希望两种表达方式都能给出相同的答案:
System.out.println(2^0*2);
System.out.println((2^0)*2);
输出:
2
4
2^0*2 = 2
和(2^0)*2 = 4
有什么特别的原因吗?
发布于 2016-10-01 08:18:17
你错误地认为^
算子的行为和数学中的指数一样。
乍一看,您可以看到^
被理解为+
运算符。实际上,它意味着按位XOR
运算符。
System.out.println(2^0*2); // 2 XOR 0 * 2 = 2
System.out.println((2^0)*2); // (2 XOR 0) * 2 = 4
System.out.println(2^4); // 2 XOR 4 = 6
XOR是排他性分离,只有在输入不同时才输出true。以下是整个技巧:
2^0 = 2 XOR 0 = (0010) XOR (0000) = (0010) = 2
2^4 = 2 XOR 4 = (0010) XOR (0100) = (0110) = 6
发布于 2016-10-01 08:17:48
检查这个链接
http://bmanolov.free.fr/javaoperators.php
2^0*2=2
(2^0)*2
()具有更高的优先级,所以首先计算2^0,然后乘以2
发布于 2016-10-01 08:18:15
https://stackoverflow.com/questions/39804396
复制相似问题