Operator bitowy

operator realizujący podstawowe operacje algebry Boole’a Z Wikipedii, wolnej encyklopedii

Operator bitowy w programowaniuoperator dostępny w określonym języku programowania (a także w innych językach komputerowych), który, działając na podanych argumentach, realizuje podstawowe operacje algebry Boole’a na pojedynczych bitach lub każdej parze odpowiadających sobie bitów pobieranych z tych samych pozycji dwóch argumentów operatora oraz operacje przesunięć lub obrotów bitowych.

To jakie operatory bitowe są dostępne w konkretnym języku programowania zależy od jego składni, a to jakie są zasady ich stosowania, w tym priorytet tych operatorów i kolejność opracowywania argumentów – od przyjętej przez autorów języka lub implementacji konwencji. Zróżnicowany jest również sposób zapisu operatorów bitowych w poszczególnych językach: stosuje się zapis w postaci słów kluczowych, bądź symboli (znaku lub znaków niebędących literami). Stosowane są operatory bitowe jednoargumentowe – operator negacji – oraz dwuargumentowe – np. suma logiczna, iloczyn logiczny i inne.

Dostępne operatory bitowe

Operatory bitowe udostępnione w językach komputerowych realizują następujące operacje bitowe:

Zapis operatorów bitowych

Podsumowanie
Perspektywa

Jak wyżej zaznaczono zapis w kodzie źródłowym operatorów bitowych zależne jest od przyjętej w składni danego języka sposobu reprezentacji znakowej operatorów, przy czym stosowane są zasadniczo dwa rozwiązania:

  • zapis za pomocą słów kluczowych, odpowiadających nazwom operacji przez nie wykonywanych, np. and, or, xor, itp., takie rozwiązanie dostępne jest m.in. w języku Pascal[1], Visual Basic[2][3] i innych,
  • zapis za pomocą symboli składających się ze znaku lub znaków innych niż litery, np. &, |, itp. takie rozwiązanie dostępne jest m.in. w języku C[4][5][6], C++[6] i innych.

W językach programowania oprócz operatorów bitowych występują także i inne, w tym operatory logiczne, realizujące odpowiednie operacje logiczne na argumentach reprezentujących wartości logiczne: prawdy i fałszu. W pewnych językach, np. C[4][5][6], C++[6], zapis tych operatorów jest różny, np. dla iloczynu logicznego jest to symbol: &&, natomiast dla iloczynu bitowego jest to symbol: &. W innych językach stosowany jest jednolity zapis tych operatorów, a to czy realizowana jest operacja bitowa czy logiczna zależne jest od typu argumentów, tak jest m.in. w języku Pascal[1], np. iloczyn bitowy oraz iloczyn logiczny realizowany jest za pomocą operatora reprezentowanego przez słowo kluczowe: and, co stanowi tzw. przeciążanie operatorów.

Stosowanie operatorów bitowych

Podsumowanie
Perspektywa

Operatory bitowe stosuje się w wyrażeniach, tak jak pozostałe operatory. Za pomocą operatorów bitowych można realizować niektóre obliczenia w sposób bardziej efektywny, szczególnie tam, gdzie optymalizacja wydajności kodu ma istotne znaczenie. Innym zastosowaniem operatorów bitowych jest badanie wybranej flagi (bitu) umieszczonej w rejestrze stanu (lub innych strukturach bitowych, takich jak np. wartości bitowego typu danych, zbiorowego typu danych lub wartości typu wyliczeniowego). Do badania takich flag stosuje się odpowiednie maski bitowe jako drugi argument wybranej operacji bitowej.

Więcej informacji język programowania, ustawienie i badanie stanu określonej flagi ...
Przykłady
język programowania ustawienie i badanie stanu określonej flagi
C[4][5][6]
# define MASKA_BIT_2=0H02;
main()
 {
   unsigned short bits;
   /* instrukcje */
   bits|=MASKA_BIT_2; /* ustawienie flagi - bit 2 */
   /* instrukcje */
   if (bits & MASKA_BIT_2) { /* badanie flagi - bit 2 */
   /* instrukcje wykonywane, gdy
      flaga - bit 2 - ustawiona */ }
 }
Pascal[1]
const MASKA_BIT_2=$02;
var Bits : Byte;
begin
  { instrukcje }
  Bits:=Bits or MASKA_BIT_2; { ustawienie flagi - bit 2 }
  { instrukcje }
  if (Bits and MASKA_BIT_2)=MASKA_BIT_2 then { badanie flagi - bit 2 }
   begin
     { instrukcje wykonywane, gdy
       flaga - bit 2 - ustawiona }
   end
end.
Zamknij

Implementacja operatorów bitowych

Podsumowanie
Perspektywa

Zagadnienie implementacji operatorów bitowych w językach komputerowych wiąże się jak wyżej zaznaczono z ustaleniem reguł ich stosowania obejmujących między innymi ich priorytet, łączność, zasady opracowywania argumentów, typy danych, które mogą być używane w operacjach bitowych i inne aspekty.

Z priorytetem operatorów bitowych wiąże się zagadnienie kolejności wykonywania obliczeń w wyrażeniach, co ma szczególne znaczenie przy budowaniu złożonych wyrażeń. Jeżeli priorytet operatorów bitowych jest wyższy niż innych operatorów, wykonywane są przed nimi. Oznacza to, że w tym przypadku, aby prawidłowo zbudować wyrażenie składające się z operacji arytmetycznych połączonych operatorem bitowych, niezbędne jest ujęcie poszczególnych operacji arytmetycznych łączonych operatorami bitowymi w nawiasy wymuszającymi określoną kolejność operacji. Ważne jest również ułożenie w hierarchii priorytetów operatorów operacji bitowych względem operatorów relacji przy budowaniu warunków badających stan określonej flagi w rejestrze flag realizowanych np. za pomocą określonej zmiennej typu całkowitoliczbowego. W przypadku wyższego priorytetu operatorów bitowych warunek z użyciem operatora porównania zostanie prawidłowo zrealizowany po operacji bitowej, w przeciwnym razie niezbędne jest ujęcie wyrażenia bitowego w nawiasach.

Operatory bitowe w językach programowania

Poniższe zestawienie zawiera dostępne operatory bitowe w wybranych językach komputerowych.

Więcej informacji język komputerowy, jednoargumentowe ...
Operatory bitowe w językach komputerowych
język komputerowy jednoargumentowe dwuargumentowe
negacja koniunkcja alternatywa alternatywa wykluczająca przesunięcie bitowe inne
w prawo w lewo
ABAP[7] BIT-NOT BIT-AND BIT-OR BIT-XOR N N N
Ada[8] N N N N N N N
C[4][5][6], C++[6] ~ & | ^ >> << N
Java[9] ~ & | ^ >> << >>>
Modula-2[10] NOT AND OR N N N INCL, EXCL
Pascal[1] not and or xor shr shl N
PL/I[11][12] ¬ & | N N N ||
Python[13] ~ & | ^ >> << N
REXX[14][15] N N N N N N N
Visual Basic[2][3][16] Not And Or Xor >> << Imp, Eqv
Visual Basic for Applications[17] Not And Or Xor N N Imp, Eqv
VHDL[18] not and or xor slr sll nand, nxor, nor
sla, sra, rol, ror
Zamknij

Przypisy

Bibliografia

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.