1. Bitvis &operator

Vi har tidigare sagt att all data lagras i minnet i en binär representation. Så för ganska länge sedan kom programmerare på många intressanta sätt att arbeta med binära tal. Java har till exempel logiska operatorer som fungerar på bitarna i ett tals binära representation: &(AND), | (OR), ~(NOT eller komplement) och ^(XOR - exklusiv eller).

a & b
Bitvis &(AND) operator

Den här operatorn är mycket lik den logiska &(AND) operatorn, bara den betecknas med ett enda et-tecken, inte två:

Och det appliceras på enskilda bitar. Varje operand behandlas som en array av bitar, och den ie biten i resultatet beräknas med hjälp av den ie biten i var och en av de två operanderna.

Den första biten av resultatet kommer att beräknas baserat på den första biten av numret a och den första biten av numret, bden andra biten - baserat på den andra biten av talet a och den andra biten av numret b, etc.

(OCH) -operatorn &betyder "den resulterande biten är lika med en endast om motsvarande bit av numret aär lika med en ANDmotsvarande bit av numret bär lika med ett":

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

Exempel:

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

2. Bitvis |operator

Denna operator är mycket lik den logiska |(OR) operatorn, bara den betecknas med en enda vertikal linje, inte två:

a | b

Och det appliceras på enskilda bitar. Varje operand behandlas som en array av bitar, och den i:te biten av resultatet beräknas med hjälp av den i:te biten för var och en av de två operanderna.

Den bitvisa |(OR) operatorn betyder "den resulterande biten är lika med en om motsvarande bit av numret aär lika med en ORmotsvarande bit av numret bär lika med ett":

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

Exempel:

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

Endast när de motsvarande bitarna (bitarna på samma position) av båda talen är noll är resultatets motsvarande bit lika med noll.



3. Bitvis ^(XOR eller "exklusiv eller") operator

Operatören XOR, även uttalad exklusiv eller , betecknas med ^symbolen. För att ange det på tangentbordet, tryck på shift + 6 (på en engelsk tangentbordslayout).

a ^ b

Den här operatören är lite lik operatören OR, inklusive genom att den har ett liknande namn:XOR

Den bitvisa ^(XOR) operatorn betyder "den resulterande biten är lika med en om motsvarande bit av numret aär lika med en ORmotsvarande bit av numret bär lika med en men inte båda samtidigt":

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

Exempel:

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

Endast när motsvarande bitar (bitarna på samma position) för båda talen är olika är resultatets motsvarande bit lika med en . Om bitarna är samma är den resulterande biten lika med noll .



4. Bitvis ~(INTE, KOMPLEMENT) operator

Jag tror att du redan kan gissa vad den gör. Denna operator är mycket lik den logiska !(NOT) operatorn, men den betecknas med en tilde , inte ett utropstecken:

~a

Detta är en unär operator, vilket betyder att den gäller ett enda nummer, inte två. Det visas före denna enda operand.

Den bitvisa ~operatorn betyder "den resulterande biten är ett om motsvarande bit av numret aär noll, och det är noll om motsvarande bit av numret aär ett":

~1 = 0
~0 = 1

Exempel:

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

Den här operatorn ändrar helt enkelt bitarna som ska 1till 0och bitar som 0ska 1.