Operatory bitowe
Operatory bitowe są używane do przeprowadzania operacji bitowych. Operacje bitowe są przeprowadzane na bitowych reprezentacjach wyrażeń użytych w tych operacjach.
Bitowa negacja (NOT)
~wynik = ~wyrazenie;
| 0101 | wyrazenie | |
| ---- | ||
| 1010 | wynik |
Wszystkie 1 zostają zamienione na 0. Wszystkie 0 zostają zamienione na 1.
Bitowa koniunkcja (AND)
&wynik = wyrazenie1 & wyrazenie2;
| 1100 | wyrazenie1 | |
| 0101 | wyrazenie2 | |
| ---- | ||
| 0100 | wynik |
Tylko dwie 1 dają 1, w przeciwnym wypadku jest 0.
Bitowa alternatywa (OR)
|wynik = wyrazenie1 | wyrazenie2;
| 1100 | wyrazenie1 | |
| 0101 | wyrazenie2 | |
| ---- | ||
| 1101 | wynik |
1 w jednym lub obu wyrażeniach dają 1, dwa 0 dają 0.
Exclusive OR (XOR)
^wynik = wyrazenie1 ^ wyrazenie2;
| 1100 | wyrazenie1 | |
| 0101 | wyrazenie2 | |
| ---- | ||
| 1001 | wynik |
Gdy w jednym i tylko w jednym wyrażeniu jest 1, rezultatem jest 1. W przeciwnym wypadku jest 0.
Przesunięcie bitowe w lewo
<<wynik = wyrazenie1 << wyrazenie2;
Operator przesuwa bity w lewo w wyrazenie1 o tyle miejsc ile ma wyrazenie2.
Na przykład:
rezultat = 12 << 2;
rezultat wynosi 48 ponieważ
| 00001100 | 12 w reprezentacji bitowej | |
| -------- | ||
| 00110000 | rezultat 48 w reprezentacji bitowej |
Przesunięcie bitowe w prawo
>>wynik = wyrazenie1 >> wyrazenie2;
Operator przesuwa bity w prawo w wyrazenie1, nie zmieniając znaku, o tyle miejsc ile ma wyrazenie2.
Na przykład:
rezultat = -12 >> 2;
rezultat wynosi -3 ponieważ
| 11110100 | -12 w reprezentacji bitowej | |
| -------- | ||
| 11111101 | rezultat -3 w reprezentacji bitowej |
Przesunięcie bitowe w prawo (bezznakowe)
>>>wynik = wyrazenie1 >> wyrazenie2;
Operator przesuwa bity w prawo w wyrazenie1 (uzupełniając lewą stronę zerami) o tyle miejsc ile ma wyrazenie2.
Na przykład:
rezultat = -12 >>> 2;
rezultat wynosi 1073741821 ponieważ
| 11111111 11111111 11111111 11110100 | -12 w reprezentacji bitowej | |
| -------- | ||
| 00111111 11111111 11111111 11111101 | rezultat 1073741821 w reprezentacji bitowej |