Java 2^0*2和(2^0)*2之间的差异?
我希望这两个表达式会给出相同的答案:Java 2^0*2和(2^0)*2之间的差异?,java,operators,expression,Java,Operators,Expression,我希望这两个表达式会给出相同的答案: System.out.println(2^0*2); System.out.println((2^0)*2); 输出: 2 4 为什么2^0*2=2和(2^0)*2=4有具体原因吗?检查此链接 2^0*2=2 具有更高的优先级n^,因此首先计算0*2,它是0,然后将其与2异或,它将返回2 (2^0)*2 ()具有更高的优先级,因此您将首先计算2^0,然后是2,然后将其与2相乘 在第一个示例中,您计算:0*2=2^0=2 在第二个示例中,您计算:2^
System.out.println(2^0*2);
System.out.println((2^0)*2);
输出:
2
4
为什么2^0*2=2
和(2^0)*2=4
有具体原因吗?检查此链接
2^0*2=2
- 具有更高的优先级n^,因此首先计算0*2,它是0,然后将其与2异或,它将返回2
在第二个示例中,您计算:2^0=2*2=4您错误地假设
^
运算符的行为与数学中的求幂相同
乍一看,您可以看到^
被理解为+
运算符。实际上,它的意思是按位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
异或是唯一的析取,仅当输入不同时才输出true。以下是整个技巧:
2^0 = 2 XOR 0 = (0010) XOR (0000) = (0010) = 2
2^4 = 2 XOR 4 = (0010) XOR (0100) = (0110) = 6
请只使用一种语言。问两种语言的问题太宽泛。
*
的优先级高于^
。很可能您想要的是Math.pow(2,0)*2
,在我确切提到的是power操作符的地方,我提到了它的xorNO检查链接,它指定了“^”的不同含义