[英]Difference between 2^0*2 and (2^0)*2?
我預計兩種表達都會給出相同的答案:
System.out.println(2^0*2);
System.out.println((2^0)*2);
輸出:
2
4
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
XOR 是互斥析取,僅當輸入不同時才輸出真。 這是整個技巧:
2^0 = 2 XOR 0 = (0010) XOR (0000) = (0010) = 2
2^4 = 2 XOR 4 = (0010) XOR (0100) = (0110) = 6
檢查此鏈接
http://bmanolov.free.fr/javaoperators.php
2^0*2=2
(2^0)*2
() 具有更高的優先級,因此您將首先評估 2^0 然后是 2,然后將其乘以 2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.