Materiał z programowania uzupełniam artykułami o operatorach bitowych. W tym artykule opiszę Ci czym jest koniunkcja bitowa w programowaniu, jak ją rozumieć i w jaki sposób liczyć wynik takiej koniunkcji z podanych liczb.

KONIUNKCJA BITOWA W PROGRAMOWANIU, CZYLI "AND" NA BITACH

Oprócz dobrze znanej koniunkcji "zwykłej" w postaci dwóch ampersandów (&&) istnieje również odmiana zastosowania koniunkcji dla liczb całkowitych, która zwraca wynik również w postaci liczby całkowitej w wyniku zastosowania operatora AND dla podanych dwóch / więcej wartości. Nazywamy to "koniunkcja bitowa" (ang. binary conjunction), ponieważ porównujemy do siebie wartości poszczególnych bitów.

Rzadko kiedy jest potrzeba sięgnąć po operatory bitowe. Przydają się w momencie programowania masek bitowych, gdy jedna zmienna może reprezentować wiele stanów "zaszytych" w bitach. Na przykład możemy tworzyć grę, w której działa system wykrywania czy gracz posiada niebieski i żółty klucz. Wówczas możemy posłużyć się koniunkcją bitową i porównać wartość maski posiadanych kluczy przez gracza i wartość maski drzwi których kluczy się "domaga". Jeżeli będą sobie równe, wtedy system uznaje, że gracz może przejść przez drzwi ✅.

Przykład obliczania

Załóżmy, że mamy liczbę 45. Przedstawmy ją sobie w systemie binarnym:

0 0 1 0 1 1 0 1

 

Druga liczba niech będzie równa 78, także ją przekonwertujmy na system dwójkowy:

0 1 0 0 1 1 1 0

Jeżeli wobec tych liczb zostanie zastosowana koniunkcja bitowa, to wynik będzie równy 12. Dlaczego? Ponieważ porównujemy każdy bit od lewej do prawej i tam, gdzie w obu przypadkach występuje 1, zapisujemy 1 (przypadek, gdy wszystkie zdania są prawdziwe) 1️⃣. W przeciwnym razie wstawiamy zero 0️⃣.

Weźmy sobie te obie liczby pod kreską:

0 0 1 0 1 1 0 1
0 1 0 0 1 1 1 0
0 0 0 0 1 1 0 0

czyli:

23 + 22 = 8 + 4 = 12

co kończy dowód 👍. Po porównaniu wszystkich osobnych bitów pojedynczo, łatwo zauważyć, że jedynki są tylko tam, gdzie dla wszystkich liczb, w tej samej "komórce" występuje jedynka. Zatem, po zamianie na system dziesiętny mamy 12.

Dodam, że możesz wprowadzać więcej liczb niż dwie 💡. Na przykład koniunkcja bitowa z liczb: 45, 78 oraz 105, da wynik równy 8. Spróbuj to wyznaczyć samodzielnie 😄.

Przykład kodu źródłowego

Szybki kod źródłowy w języku C dla prezentacji:

#include 

int main(void)
{
	int binaryAND = 45 & 78;

	printf("%d\n", binaryAND);
	
	return 0;
}

Można to sobie skompilować przy użyciu np. GCC.

W językach wysokiego poziomu, najczęstszym "znakiem rozpoznawczym" operacji koniunkcji bitowej jest pojedynczy ampersand (&) wstawiony pomiędzy liczby całkowite, gdyż jest to operator dwuargumentowy.

To jest jedna z operacji bitowych. Jakie występują jeszcze 🤔?

  • Koniunkcja bitowa (bity wyniku przyjmują wartość 1 <=> bity wszystkich zdań przyjmują wartość 1) 👈 jesteśmy tu,
  • Alternatywa bitowa (bity wyniku przyjmują wartość 1 <=> bity któregokolwiek ze zdań przyjmują wartość 1),
  • Bitowa alternatywa rozłączna (bity wyniku przyjmują wartość 1 <=> bity w nieparzystej liczbie zdań przyjmują wartość 1),
  • Negacja bitowa (wszystkie bity zostają odwrócone z uwzględnieniem działania bitu znaku).

Reszta jest opisana w odrębnych artykułach.

Koniunkcja bitowa w programowaniu

Koniunkcja bitowa w programowaniu to operacja AND zastosowana na dwóch lub więcej liczbach, w której sprawdzanie spełnialności warunku odbywa się na pojedynczych bitach.


To wszystko! Teraz będziesz wiedział(a) jak "bitować" 😂!

PODOBNE ARTYKUŁY