1. Bitvis &operator

Vi har tidligere sagt, at alle data er lagret i hukommelsen i en binær repræsentation. Så for ganske lang tid siden fandt programmører op med en masse interessante måder at arbejde med binære tal på. For eksempel har Java logiske operatorer, der opererer på bits af et tals binære repræsentation: &(AND), | (OR), ~(IKKE eller komplement) og ^(XOR - eksklusiv eller).

a & b
Bitvis &(AND) operator

Denne operator minder meget om den logiske &(AND) operator, kun den er angivet med et enkelt og-tegn, ikke to:

Og det anvendes på individuelle bits. Hver operand behandles som en matrix af bit, og den ith bit af resultatet beregnes ved at bruge den ith bit af hver af de to operander.

Den første bit af resultatet vil blive beregnet baseret på den første bit af tallet a og den første bit af tallet b, den anden bit - baseret på den anden bit af tallet a og den anden bit af tallet bosv.

(AND) operatoren &betyder "den resulterende bit er kun lig med én, hvis den tilsvarende bit af tallet aer lig med én, ANDden tilsvarende bit af tallet ber lig med én":

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

Eksempler:

Eksempel Resultat
0b0011 & 0b1010
0b0010
0b1111 & 0b0000
0b0000
0b1010 & 0b0101
0b0000
0b1111 & 0b1010
0b1010

2. Bitvis |operator

Denne operator er meget lig den logiske |(OR) operator, kun den er angivet med en enkelt lodret linje, ikke to:

a | b

Og det anvendes på individuelle bits. Hver operand behandles som en matrix af bit, og den ith bit af resultatet beregnes ved at bruge den ith bit af hver af de to operander.

Den bitvise |(OR) operator betyder "den resulterende bit er lig med én, hvis den tilsvarende bit af tallet aer lig med én, ORden tilsvarende bit af tallet ber lig med én":

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

Eksempler:

Eksempel Resultat
0b0011 | 0b1010
0b1011
0b1110 | 0b0000
0b1110
0b1010 | 0b0101
0b1111
0b1111 | 0b1010
0b1111

Kun når de tilsvarende bits (bittene på samme position) af begge tal er nul, er resultatets tilsvarende bit lig med nul.



3. Bitwise ^(XOR eller "eksklusiv eller") operator

Operatøren XOR, også udtalt eksklusiv eller , er angivet med ^symbolet. For at indtaste det på tastaturet skal du trykke på shift + 6 (på et engelsk tastaturlayout).

a ^ b

Denne operatør minder lidt om ORoperatøren, herunder ved at den har et lignende navn:XOR

Den bitvise ^(XOR) operator betyder "den resulterende bit er lig med én, hvis den tilsvarende bit af tallet aer lig med én, ORden tilsvarende bit af tallet ber lig med én, men ikke begge på samme tid":

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

Eksempler:

Eksempel Resultat
0b0011 ^ 0b1010
0b1001
0b1110 ^ 0b0000
0b1110
0b1010 ^ 0b0101
0b1111
0b1111 ^ 0b1010
0b0101

Kun når de tilsvarende bits (bittene på samme position) af begge tal er forskellige , er resultatets tilsvarende bit lig med en . Hvis bitsene er de samme , er den resulterende bit lig med nul .



4. Bitvis ~(IKKE, KOMPLEMENT) operator

Jeg tror, ​​du allerede kan gætte, hvad det gør. Denne operator ligner meget den logiske !(NOT) operator, men den er angivet med en tilde , ikke et udråbstegn:

~a

Dette er en unær operator, hvilket betyder, at den gælder for et enkelt tal, ikke to. Det vises før denne enkelte operand.

Den bitvise ~operator betyder "den resulterende bit er én, hvis den tilsvarende bit af tallet aer nul, og den er nul, hvis den tilsvarende bit af tallet aer én":

~1 = 0
~0 = 1

Eksempler:

Eksempel Resultat
~0b0011
0b1100
~0b0000
0b1111
~0b0101
0b1010
~0b1111
0b0000

Denne operator ændrer simpelthen den bit, der skal 1til 0, og bits, der 0skal 1.