2011-08-17 36 views
5

Khi đưa ra hai đối số boolean, toán tử^thực hiện độc quyền hoặc, ví dụ:nhà điều hành groovy^

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

Khi đưa ra hai đối số dạng số, nó thực hiện điều gì đó, nhưng tôi không biết gì. Lúc đầu, tôi nghĩ đó là sự phân chia mô-đun vì

(5^5) == 0 

Tuy nhiên

(10^4) == 14 

Vì vậy, nó không phải là mô-đun bộ phận, nó là một số loại bit chuyển dịch?

+0

Đó là Bitwise độc ​​quyền hoặc, giống như Java http://stackoverflow.com/questions/460542/operator-in-java –

Trả lời

12

^ làm điều tương tự giống như trong Java và hầu hết các ngôn ngữ khác:

Đó là một Bitwise exclusive OR (viết tắt: XOR bitwise)

này có nghĩa là cho mỗi bit trong biểu diễn nhị phân của hai số bit kết quả trong đầu ra sẽ là bit_in_first_value^bit_in_second_value.

+1

Thật vậy, theo tôi biết tất cả langauges xuất phát mạnh mẽ từ C có hành vi quy định này của họ Toán tử XOR. VÍ DỤ. 'perl -le' print (10^4) '' in ra 14. Groovy và Perl chiếm một sinh thái tương tự đẹp, rất nhiều để [phiên bản Groovy] (http://pleac.sourceforge.net/pleac_groovy/index.html) là lần đầu tiên trong số hàng chục ngôn ngữ có bản dịch của * Perl Cookbook * được hoàn thành trong [PLEAC - Ngôn ngữ lập trình Ví dụ tương tự Cookbook] (http://pleac.sourceforge.net/) kho lưu trữ trên Sourceforge. OCaml là thứ hai. Python là 85% và Ruby chỉ ở mức 65%. Groovy rất dễ dàng và thú vị. – tchrist