Tel: 600283424
Operacje logiczne w języku programowania C#
PerfectSoft > Baza wiedzy > C# > Operacje logiczne w języku programowania C#

Operacje logiczne w języku programowania C#

EN

Operacje logiczne C#

Podczas programowania nieustannie pojawia się konieczność logicznego sprawdzania wartości zmiennych. Operacje logiczne mają bardzo różnorodne zastosowania, pozwala np. na kontrolowanie występujących zdarzeń, sprawdzanie dostępności funkcji, czy też zarządzanie zalogowanymi osobami w serwisie.



Język C# udostępnia wymienione poniżej operatory logiczne:

AND (iloczyn logiczny)x & y
XOR (suma modulo 2)x ^ y
OR (suma logiczna)x | y
NOT (negacja)!
Warunkowy ANDx && y
Warunkowy ORx || y
operacje logiczne
operacje logiczne

Operator & – AND


Jednoargumentowy operator realizujący operację iloczynu logicznego. Sprawdza dwie podane wartości i zwraca wartość true tylko w przypadku gdy obie mają także wartość true.


if(false & false)
{
//tu jest kod, który się nie wykona
}

if(true & false)
{
//ten kod, także się nie wykona
}

if(true & true)
{
//ten kod zostanie wykonany
}

Operator & podczas wykonywania porównania sprawdza oba argumenty, przez co kod podany poniżej wywoła zarówno funkcję WykonajFunkcje1() jak i WykonajFunkcje2().


if(WykonajFunkcje1() & WykonajFunkcje2())
{
//tu jest kod, który się nie wykona
}

Operator może służyć także do wykonywania sumy logicznej na liczbach. Wykonywanie takiej operacji przedstawia poniższy przykład:


// Operacja sumy logicznej AND liczb heksadecymalnych
// A9 (1010 1001) oraz 3D (0011 1101).
// 1010 1001
// 0011 1101
// ---------
// 0010 1001 czyli 29
Console.WriteLine("0x{0:x}", 0xa9 & 0x3D);
//zapis {0:x} wyświetla liczbę w postaci szesnastkowej

Operator ^ – XOR


Operator realizuje operację sumy modulo 2 i zwraca wartość true tylko w sytuacji gdy sprawdza dwie różne wartości: jedna będąca true, a druga false. W przypadku dwóch wartości true lub dwóch wartości false zwraca false.


if(false ^ false)
{
//tu jest kod, który się nie wykona
}

if(true ^ true)
{
//ten kod, także się nie wykona
}

if(true ^ false)
{
//ten kod zostanie wykonany
}

Operacja XOR może być wykonywana także na liczbach. W takim przypadku wynik obliczany jest przez sumę modulo 2 z każdej pary bitów danych liczb. Sposób wyliczania zaprezentowano poniżej:


// Operacja XOR liczb heksadecymalnych
// A9 (1010 1001) oraz 3D (0011 1101).
// 1010 1001
// 0011 1101
// ---------
// 1001 0100 czyli 94
Console.WriteLine("0x{0:x}", 0xa9 ^ 0x3D);
//zapis {0:x} wyświetla liczbę w postaci szesnastkowej

Operator | – OR


Operator realizuję operację sumy logicznej co oznacza, że wystarczy by jeden z elementów posiadał wartość true by wynik operacji także miał wartość true. Sprawdzane są obie wartości, więc tak jak przy operatorze & gdy będą nimi funkcje, to obie zostaną wywołane.


if(false | false)
{
//tu jest kod, który się nie wykona
}

if(true | false)
{
//ten kod zostanie wykonany
}

if(true | true)
{
//ten kod także zostanie wykonany
}

Operator realizuję sumę logiczną także na bitach liczb podanych jako wartości:

// Operacja XOR liczb heksadecymalnych
// A9 (1010 1001) oraz 3D (0011 1101).
// 1010 1001
// 0011 1101
// ---------
// 1011 1101 czyli BD
Console.WriteLine("0x{0:x}", 0xa9 | 0x3D);
//zapis {0:x} wyświetla liczbę w postaci szesnastkowej

Operator ! – NOT


Operator jest zdefiniowany dla typu bool i realizuje negacje. W przypadku wystąpienia wartości true zwróci false i odwrotnie.


Console.WriteLine(!true); //Wyświetli wartość false
Console.WriteLine(!false); //Wyświetli wartość true

Operator && – warunkowy AND


Operator warunkowy AND realizuje taką samą operację jak operator & dodając do niej pewne założenie. Iloczyn logiczny jest prawdą tylko jeśli oba elementy są prawdziwe, a więc wystarczy by jeden z nich miał wartość false i całe wyrażenie będzie false. Taką zależność wykorzystuje warunkowy AND. Podczas sprawdzania, gdy pierwszy element jest false to drugi nie jest sprawdzany i zostaje zwrócona wartość false. Realizacja iloczynu logicznego w taki sposób może znacznie przyspieszyć wykonywanie operacji. Rozważmy to w poniższym przykładzie:


//Jeden z wartości, które będą porównywane jest false
bool warunek1 = false;
bool warunek2 = true, warunek3 = true, warunek4 = true, warunek5 = true, warunek6 = true;

// W poniższym przykładzie sprawdzany jest warunek1, następnie warunek2, warunek3 itd.
if(warunek1 & warunek2 & warunek3 & warunek4 & warunek5 & warunek6)
Console.WriteLine("0x{0:x}", 0xa9 | 0x3d);

// Natomiast poniższy przykład sprawdza warunek1, stwierdza, że operacja
// nie może zostać wykonana i kończy pracę na tym etapie
if(warunek1 && warunek2 && warunek3 && warunek4 && warunek5 && warunek6)
Console.WriteLine("0x{0:x}", 0xa9 | 0x3d);

Znajomość różnicy pomiędzy operatorami & oraz && jest istotna, gdy wartościami podawanymi do iloczynu są funkcje. W Przypadku operatora && nigdy nie można zakładać, że wszystkie funkcje zostaną uruchomione, ponieważ praca operacja zostanie zakończona przy pierwszej napotkanej wartości false.

Operator || – warunkowy OR

Podobnie jak w operatorze opisanym powyżej wykorzystana jest tu pewna właściwość sumy logicznej. Wystarczy, że jeden z elementów będzie miał wartość true by całe wyrażenie także było true. W związku z tym pierwsza napotkana wartość true powoduje zatrzymanie sprawdzania pozostałych warunków i uruchamiany jest kod pod warunkiem.


Tak jak i w operatorze && nie można zakładać, że wszystkie sprawdzane funkcje zostaną uruchomione, ponieważ po pierwszej, która zwróci true sprawdzanie się zakończy.


//Zmienne z różnymi wartościami
bool warunek1 = true, warunek2 = false, warunek3 = true, warunek4 = true, warunek5 = false, warunek6 = false;

// W poniższym przykładzie sprawdzany jest warunek1, następnie warunek2, warunek3 itd.
if(warunek1 | warunek2 | warunek3 | warunek4 | warunek5 | warunek6)
Console.WriteLine("0x{0:x}", 0xa9 | 0x3d);

// Natomiast poniższy przykład sprawdza warunek1, stwierdza, że operacja
// może zostać wykonana i wykonuje kod poniżej
if(warunek1 || warunek2 || warunek3 || warunek4 || warunek5 || warunek6)
Console.WriteLine("0x{0:x}", 0xa9 | 0x3d);

Kolejność wykonywania operacji logicznych


Kolejność wykonywania operacji jest ściśle określona i przedstawiona poniżej od operacji wykonywanych najwcześniej:


  1. Negacja
  2. XOR
  3. Iloczyn logiczny
  4. suma logiczna
×
Czy życzą sobie Państwo kontaktu z naszej strony?
TOP