2011-08-17 74 views
5

當給出兩個布爾參數時,^運算符執行排他或例如groovy^operator

true^true == false 
true^false == true 
false^true == true 
false^false == false 

當給出兩個數值參數時,它做了一些事情,但我不知道是什麼。起初我還以爲是模塊化的分工,因爲

(5^5) == 0 

然而

(10^4) == 14 

所以它不是模塊化的分工,是某種位移的?

+0

這是按位異或,相同的Java http://stackoverflow.com/questions/460542/operator-in-java –

回答

12

^做同樣的事情,因爲它在Java和大多數其他語言:

這是一個按位異或(簡稱:按位異或)

這意味着在的二進制表示的每個位兩個數字在輸出結果位將是bit_in_first_value^bit_in_second_value

+1

事實上,據我所知,在C強烈衍生的所有漢語語言有此規定的行爲,他們的XOR操作員。例如。 'perl -le'print(10^4)''打印出來14. Groovy和Perl佔據了一個相似的生態環境,非常好[Groovy的版本](http://pleac.sourceforge.net/pleac_groovy/index.html )是在Sourceforge的[PLEAC - Programming Language Examples Alike Cookbook](http://pleac.sourceforge.net/)存儲庫中完成了翻譯* Perl Cookbook *的數十種語言中的第一批。 OCaml是第二個。 Python只有85%,而Ruby只有65%。 Groovy很簡單而有趣。 – tchrist