Powiel możliwe:
What are bitwise operators?Co to jest | i używa się operatorów?
Ostatnio natknąłem się na kilku próbkach, które używały | i^operator. Zgaduję, że są to operatory or
i negation
.
Co właściwie oznaczają te operatory?
Powiel możliwe:
What are bitwise operators?Co to jest | i używa się operatorów?
Ostatnio natknąłem się na kilku próbkach, które używały | i^operator. Zgaduję, że są to operatory or
i negation
.
Co właściwie oznaczają te operatory?
Jeśli stosuje się go do integralnych typach są operatory bitowe albo i xor. Jednak jeśli zastosujesz je do typów boolowskich, są one logiczne lub xor. Spójrz na wyjaśnienie or operator i xor operator
można uzyskać więcej informacji na temat operacji logicznych z wikipedii truth table
|
= (bitowe/non-zwarcie) "lub"^
= "XOR"i o "a nie" (bitowe negacja) jest ~
^
logiczna XOR
|
Logiczne OR
aktualizacja
w C# jej operacje logiczne TOO:
Console.WriteLine(true^false); // logical exclusive-or
Console.WriteLine(false^false); // logical exclusive-or
-1 Żadne z nich nie jest operatorem logicznym. Oboje są BitWise ... i mieszałeś XOR i OR. –
oprócz otrzymywania XOR i OR wstecz wyżej wymieniony artykuł MSDN z emddudley wymień je na oba jako Logiczny –
Michael, Logiczny lub operator || C/C++, uwaga na dole tej strony (wyjaśnia różnicę między logiczną i bitową) http://publib.boulder.ibm.com/infocenter/comphelp/v8v101/index.jsp?topic=/com.ibm.xlcpp8a.doc /language/ref/logore.htm –
MSDN ma dokumentację na wszystkich C# operatorów w:
http://msdn.microsoft.com/en-us/library/6a71f45d.aspx
EDIT - Jon B skomentował odpowiedni cytat z połączonego dokumentu racja byłaby przydatna.
|
to Logical OR operator.
Binarny | operatory są predefiniowane dla typów integralnych i bool. Dla typów integralnych, | oblicza bitowe OR swoich operandów. W przypadku operandów logicznych, | oblicza logiczne OR swoich operandów; to znaczy, wynik jest fałszywy wtedy i tylko wtedy, gdy oba argumenty są fałszywe.
^
to Logical XOR operator.
Operatory binarne^są predefiniowane dla typów integralnych i bool. Dla typów całkowitych^oblicza bitowe exclusive-OR swoich operandów. Dla operandów logicznych,^oblicza logiczne wyłączne - lub jego operandy; to znaczy, wynik jest prawdziwy wtedy i tylko wtedy, gdy dokładnie jeden z jego argumentów jest prawdziwy.
-1 Zamieszczanie linku do dokumentów nie jest odpowiedzią. –
A może ... =)) – Cipi
@Jon B, więc zazwyczaj lubisz powtarzać rzeczy w kółko? Dlaczego nie skorzystać z doskonałego zasobu, który wyjaśnia to zamiast ponownego wynajdywania koła? –
ze zintegrowanym typów | jest bitowym lub,^bitowym xor i dla kompletności & jest bitowym i.
W typach boolowskich, | jest boolean lub,^a boolean xor i & a boolean &.
Dla porównania || to boolean zwarciowy lub - jeśli pierwszy operand jest prawdziwy, drugi argument nie jest oceniany. & & & to boolean zwierający i - jeśli pierwszy operand jest fałszywy, drugi nie jest oceniany. Nie ma zwarcia ^, ponieważ nie ma przypadku, w którym drugi nie musi być oceniany.
|| i & & są częściej używane niż | i & w przypadkach boolowskich, ponieważ zwykle istnieje co najmniej niewielki wzrost wydajności i nigdy straty. Jednak jeśli prawy operand miał efekt uboczny, który był ważny, aby uruchomić we wszystkich przypadkach, to | lub & byłby używany. W praktyce jest to rzadkie i nieprzyjemny zapach (jeśli efekt uboczny jest ważny, powinien być oceniany w oddzielnym wyrażeniu, aby cel był wyraźniejszy).
Edytuj: źródłem potencjalnego zamieszania, jest to, że w niektórych innych językach można używać całych typów jako booleans (np. Możesz zrobić if(53)
i jest taki sam jak if(true)
), co powoduje, że różnice pomiędzy powyższymi operatorami są całkiem różne: "jest taki sam, jeśli użyto typu" czysto "typu boolowskiego (który ma tylko wartości true i false jako możliwe wartości), ale nie inaczej. C# celowo nie dopuszcza operacji boolowskich na typach integralnych właśnie w celu uniknięcia możliwości błędów, które istnieją w takich językach.
Dlaczego jest to głosowanie na zamknięcie – Simsons
To musi być duplikat –
I również zostać odrzucone !!!! – Simsons