Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 2^0*2和(2^0)*2之间的差异?_Java_Operators_Expression - Fatal编程技术网

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^0,然后是2,然后将其与2相乘

在第一个示例中,您计算:0*2=2^0=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检查链接,它指定了“^”的不同含义