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 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ć" 😂!