如果这是重复的,我很抱歉,但我在 SO 中没有找到任何东西。
所以有人可以解释一下为什么
System.out.println((2^0));
这会回来2
吗?
我期待一个1
。
如果这是重复的,我很抱歉,但我在 SO 中没有找到任何东西。
所以有人可以解释一下为什么
System.out.println((2^0));
这会回来2
吗?
我期待一个1
。
因为^
运算符的意思不是“将 2 提高到 0 次方”。这是一个按位异或运算符。
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html
为此,您的代码应如下所示:
double one = Math.pow(2.0, 0.0); // Silly, but you can do it.
如果答案不完全是 1.0,请不要感到惊讶。您需要了解浮点数的工作原理。
该^
符号表示XOR而不是 pow。试试Math.Pow(2.0, 0.0)
吧。
Java 中的 ^ 是按位异或。所以 2(1 0) ^(XOR) 0(0 0) =1 0 即 2 !!! 知道了?