Pra*_* VL 4 java expression operators
我期望两个表达式都能给出相同的答案:
System.out.println(2^0*2);
System.out.println((2^0)*2);
Run Code Online (Sandbox Code Playgroud)
输出:
2
4
Run Code Online (Sandbox Code Playgroud)
是否有一个具体原因2^0*2 = 2和(2^0)*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
Run Code Online (Sandbox Code Playgroud)
XOR是互斥析取,仅当输入不同时才输出true。这是整个窍门:
2^0 = 2 XOR 0 = (0010) XOR (0000) = (0010) = 2
2^4 = 2 XOR 4 = (0010) XOR (0100) = (0110) = 6
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
208 次 |
| 最近记录: |