1. Bitsgewijze &operator

We zeiden eerder dat alle gegevens in een binaire weergave in het geheugen worden opgeslagen. Dus vrij lang geleden bedachten programmeurs veel interessante manieren om met binaire getallen te werken. Java heeft bijvoorbeeld logische operatoren die werken op de bits van de binaire representatie van een getal: &(AND), | (OR), ~(NOT of complement) en ^(XOR - exclusief of).

a & b
Bitsgewijze &(EN) operator

Deze operator lijkt erg op de logische &(AND) operator, alleen wordt hij aangeduid met een enkele ampersand, niet twee:

En het wordt toegepast op individuele bits. Elke operand wordt behandeld als een reeks bits en de ith bit van het resultaat wordt berekend met behulp van de ith bit van elk van de twee operanden.

Het eerste bit van het resultaat wordt berekend op basis van het eerste bit van het getal a en het eerste bit van het getal b, het tweede bit - op basis van het tweede bit van het getal a en het tweede bit van het getal b, enz.

De &(AND)-operator betekent "het resulterende bit is alleen gelijk aan één als het overeenkomstige bit van het getal agelijk is aan één, ANDhet overeenkomstige bit van het getal bgelijk is aan één":

1 & 1 = 1
1 & 0 = 0
0 & 1 = 0
0 & 0 = 0

Voorbeelden:

Voorbeeld Resultaat
0b0011 & 0b1010
0b0010
0b1111 & 0b0000
0b0000
0b1010 & 0b0101
0b0000
0b1111 & 0b1010
0b1010

2. Bitsgewijze |operator

Deze operator lijkt sterk op de logische |(OF) operator, alleen wordt hij aangeduid met een enkele verticale lijn, niet twee:

a | b

En het wordt toegepast op individuele bits. Elke operand wordt behandeld als een reeks bits en het i-de bit van het resultaat wordt berekend met behulp van het i-de bit van elk van de twee operanden.

De bitsgewijze |(OR) operator betekent "de resulterende bit is gelijk aan één als de corresponderende bit van het getal agelijk is aan één, ORde corresponderende bit van het getal bis gelijk aan één":

1 | 1 = 1
1 | 0 = 1
0 | 1 = 1
0 | 0 = 0

Voorbeelden:

Voorbeeld Resultaat
0b0011 | 0b1010
0b1011
0b1110 | 0b0000
0b1110
0b1010 | 0b0101
0b1111
0b1111 | 0b1010
0b1111

Alleen als de corresponderende bits (de bits op dezelfde positie) van beide getallen nul zijn, is de corresponderende bit van het resultaat gelijk aan nul.



3. Bitwise ^(XOR of "exclusief of") operator

De XORoperator, ook wel uitgesproken als exclusief of , wordt aangeduid met het ^symbool. Om het op het toetsenbord in te voeren, drukt u op shift + 6 (op een Engelse toetsenbordindeling).

a ^ b

Deze operator lijkt enigszins op de ORoperator, ook omdat hij een vergelijkbare naam heeft:XOR

De bitsgewijze ^(XOR) operator betekent "de resulterende bit is gelijk aan één als de corresponderende bit van het getal agelijk is aan één, ORde corresponderende bit van het getal bis gelijk aan één maar niet beide tegelijk":

1 ^ 1 = 0
1 ^ 0 = 1
0 ^ 1 = 1
0 ^ 0 = 0

Voorbeelden:

Voorbeeld Resultaat
0b0011 ^ 0b1010
0b1001
0b1110 ^ 0b0000
0b1110
0b1010 ^ 0b0101
0b1111
0b1111 ^ 0b1010
0b0101

Alleen als de corresponderende bits (de bits op dezelfde positie) van beide getallen verschillend zijn , is de corresponderende bit van het resultaat gelijk aan één . Als de bits hetzelfde zijn , is de resulterende bit gelijk aan nul .



4. Bitsgewijze ~(NIET, COMPLEMENT) operator

Ik denk dat je al kunt raden wat het doet. Deze operator lijkt sterk op de logische !(NOT) operator, maar wordt aangeduid met een tilde , niet met een uitroepteken:

~a

Dit is een unaire operator, wat betekent dat het van toepassing is op een enkel nummer, niet op twee. Het verschijnt voor deze enkele operand.

De bitsgewijze ~operator betekent "de resulterende bit is één als de overeenkomstige bit van het getal anul is, en het is nul als de overeenkomstige bit van het getal aéén is":

~1 = 0
~0 = 1

Voorbeelden:

Voorbeeld Resultaat
~0b0011
0b1100
~0b0000
0b1111
~0b0101
0b1010
~0b1111
0b0000

Deze operator verandert simpelweg de bits die 1naar 0en bits die 0naar 1.