W niniejszym artykule pochylimy się nad tym, na czym polega alternatywa bitowa w programowaniu. Opiszę Ci jak ten operator bitowy funkcjonuje na liczbach całkowitych oraz jak rozumieć wyznaczanie wyniku operacji OR na pojedynczych bitach, także zapraszam 😉!
ALTERNATYWA BITOWA W PROGRAMOWANIU, CZYLI "OR" NA BITACH
Zajrzymy pod spód funkcjonowania alternatywy, lecz nie tej standardowej (dwie pionowe kreski), tylko w kontekście operatora bitowego. Operacja OR akurat nie ulega zmianie (prawda, gdy co najmniej jeden z kilku warunków jest prawdziwy), więc zasada identyczna jak przy alternatywie "klasycznej". Różnica kryje się w wyznaczaniu wyniku całkowitoliczbowego‼️.
Przy alternatywie bitowej, to nie wyrażenia logiczne są poddawane weryfikacji, tylko pojedyncze bity liczb całkowitych. Kiedy chcesz wyznaczyć wynik alternatywy bitowej, to podajesz liczby całkowite i patrzysz na poszczególne bity w danej kolumnie, czy którykolwiek z nich posiada wartość 1 1️⃣. Jeżeli tak, to bit wartości końcowej też będzie wynosił 1, a w przeciwnym razie będzie zero 0️⃣.
Co do przykładowego zastosowania, to wiedza o czymś takim przydaje się podczas programowania masek bitowych. Możesz chcieć nadać różne uprawnienia plikom i zamiast tworzyć serię zmiennych typu logicznego, utworzyć tylko jedną jako "int". Każdy z bitów odpowiadałby za jakąś operację. W momencie przyzwolenia na którąś z operacji można by, używając alternatywy bitowej, dodać do maski bitowej nadanych uprawnień plikowi, maskę bitową operacji, na jaką się zezwala (czyli innymi słowy, "dodałoby się" bit do sumy już posiadanych uprawnień). Wtedy użytkownik ma uprawnienia do danej czynności na danym pliku i może ją wykonać bez problemu 🔓.
Przykład obliczania
Mamy ten sam zbiór liczb, jak przy prezentacji koniunkcji bitowej: 45 i 78. Zatem, alternatywa bitowa dla tych liczb będzie równa 111. Dlaczego tyle?
Skonwertuj sobie liczbę 45 na system dwójkowy:
| 0 | 0 | 1 | 0 | 1 | 1 | 0 | 1 |
i 78 też na system dwójkowy:
| 0 | 1 | 0 | 0 | 1 | 1 | 1 | 0 |
To w celu wyznaczenia, ile wyniesie alternatywa bitowa tych liczb, tworzymy sobie nowy wiersz dla wyniku i patrzymy czy jest jakaś jedynka w danej "kolumnie" (pionowo). I tak po nitce do kłębka, aż wyznaczymy wszystkie wartości i oto jest wynik:
| 0 | 0 | 1 | 0 | 1 | 1 | 0 | 1 |
| 0 | 1 | 0 | 0 | 1 | 1 | 1 | 0 |
| 0 | 1 | 1 | 0 | 1 | 1 | 1 | 1 |
czyli:
26 + 25 + 23 + 22 + 21 + 20 = 64 + 32 + 8 + 4 + 2 + 1 = 111
co kończy dowód ✔️. Zgodnie z alternatywą, wystarczy jeden warunek spełniony, aby zdanie było prawdziwe. Wniosek nasuwa się samoistnie, teraz wystarczy tylko dobrze się przyjrzeć 👀.
Przykład kodu źródłowego
Malutki przykład w języku C gotowy do skompilowania przy użyciu GCC bądź każdego innego kompilatora:
#include
int main(void)
{
int binaryOR = 45 | 78;
printf("%d\n", binaryOR);
return 0;
} Znak pionowej kreski (|), tak rozpoznasz alternatywę bitową w kodzie źródłowym. Jest to najczęściej używany znak w językach wysokiego poziomu ℹ️.
Możesz chcieć poznać inne operatory bitowe, bo pokazałem Ci jeden z kilku występujących:
- Koniunkcja bitowa (bity wyniku przyjmują wartość 1 <=> bity wszystkich zdań przyjmują wartość 1),
- Alternatywa bitowa (bity wyniku przyjmują wartość 1 <=> bity któregokolwiek ze zdań przyjmują wartość 1) 👈 analizujemy ten,
- 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).
Na każdy z typów przydzielony jest osobny artykuł.
Alternatywa bitowa w programowaniu to wykonanie operacji OR na liczbach całkowitych, zamiast na wyrażeniach logicznych. Wynik całkowitoliczbowy jest sumą potęg dwójki tam, gdzie dla danej kolumny alternatywa zwraca prawdę.
Dotknęliśmy końca zagadnienia o alternatywie bitowej 🏁. Traktuj to bardziej jako "smaczek" do kodu aniżeli konieczny budulec do perfekcyjnego opanowania 😉.