Coraz mniej czasu w ciągu dnia, więc postanowiłem wziąć na klatę podobny temat zbliżony do poprzedniego (poprzednio pisałem o przesunięciach bitowych). Mają ze sobą wiele wspólnego (przesunięcia to jeden z typów) więc postanowiłem "postawić" te wątki obok siebie. Przed Wami, następna opowieść o alternatywnych zapisach. W roli głównej, operatory bitowe, ale nie te, które już dobrze znacie.
OPERATORY BITOWE. TŁUMACZENIE W PIGUŁCE
Wyjaśnienia dzielą się na proste i szybkie oraz długie i naukowe. Są jeszcze takie, które się w ogóle nie nadają :D. W każdym razie, objaśnię ten temat trzymając się pierwszego wariantu. Tak na poważnie przechodząc do tematu, nie będę się produkował na temat tych klasycznych operatorów jak negacja (!) czy koniunkcja (&&). Raczej skupię się na pojedynczym ampersandzie (&) oraz pojedynczej pionowej kresce (|). Oba te zapisy są obsługiwane przez niektóre języki wysokiego poziomu (na pewno C, C++, Java i C#) i służą do obliczania liczb w systemie binarnym. Takie ładne terminy to "koniunkcja binarna" i "alternatywa binarna". Operatory bitowe posiadają również takie rodzaje. Pozwólcie, że po raz kolejny zaprezentuję przykłady.
Na każdy z rodzajów operatora jest poświęcony odrębny artykuł, więc tutaj tylko o nich napomknę, a po szczegóły skieruję do odpowiedniego materiału.
KONIUNKCJA BITOWA
Koniunkcja bitowa, czyli operacja AND na pojedynczych bitach. Wymaga co najmniej dwóch liczb całkowitych. Polega na wykonaniu koniunkcji na bitach w danej "kolumnie". Jeżeli wszystkie bity w danej kolumnie mają wartość 1, to bit w wartości wynikowej także przyjmie wartość 1.
ALTERNATYWA BITOWA
Alternatywa bitowa, inaczej operacja OR. Wymaga co najmniej dwóch liczb całkowitych. Polega na przeprowadzeniu alternatywy na bitach w danej "kolumnie". Bit wartości wynikowej przyjmie wartość 1, gdy którykolwiek z bitów podanych liczb całkowitych posiada wartość 1.
BITOWA ALTERNATYWA ROZŁĄCZNA
Bitowa alternatywa rozłączna (wykluczająca) - operacja XOR (ang. exclusive OR). Wymaga co najmniej dwóch liczb całkowitych. Jej zadaniem jest wykonanie alternatywy rozłącznej na bitach w danej "kolumnie". Żeby bit wartości wynikowej wyniósł 1, nieparzysta liczba bitów podanych liczb całkowitych musi przyjmować wartość 1.
NEGACJA BITOWA
Negacja bitowa to zastosowanie operacji NOT na bitach. Wymaga tylko jednej liczby całkowitej. Zamienia wartości wszystkich bitów na przeciwne, natomiast z uwzględnieniem tzw. bitu znaku. Sprowadza wynik do postaci kodu uzupełnień do dwóch ze zwiększeniem wyniku o jeden.
Mamy następny temat załatwiony. Operatory bitowe, ale te mniej znane. Dodam, że języki obsługujące te operacje pozwalają na skrócony zapis (&=, |= itd.), taki sam jak przy wszystkich podstawowych operacjach. Zastosowanie w praktyce oprócz szpanu? Konfigurowanie aplikacji w postaci nakładania "maski bitowej" dla przykładu (tak się bardzo często robi w C++).