Exploitanten worden gebruikt om bewerkingen uit te voeren op waarden en variabelen. Dit zijn de speciale symbolen die rekenkundige en logische berekeningen uitvoeren. De waarde waarop de operator werkt, staat bekend als de operand.
Bitwise-operatoren voor Python
Bitsgewijze operatoren van Python worden gebruikt om bitsgewijze berekeningen uit te voeren op gehele getallen. De gehele getallen worden eerst omgezet in binair getal en vervolgens worden bewerkingen uitgevoerd op elk bit of corresponderend paar bits, vandaar de naam bitsgewijze operatoren. Het resultaat wordt vervolgens in decimaal formaat geretourneerd.
Opmerking: Bitwise-operatoren in Python werken alleen op gehele getallen.
| OPERATOR | NAAM | BESCHRIJVING | SYNTAXIS |
|---|---|---|---|---|
| | & | Bitsgewijs EN | Resultaatbit 1, als beide operandbits 1 zijn; anders resulteert bit 0. | x & y |
| | | Bitsgewijze OF | Resultaatbit 1, als een van de operandbits 1 is; anders resulteert bit 0. | x | En | |
| ^ | Bitsgewijze XOR | Resultaatbit 1, als een van de operandbits 1 is, maar niet beide, anders is het resultaat bit 0. | x^y | |
| | ~ | Bitwijs NIET | Inverteert individuele bits. | ~x |
| >> | Bitsgewijs naar rechts verschuiven | De waarde van de linker operand wordt met het aantal bits naar rechts verplaatst gespecificeerd door de juiste operand. | x>> | |
| << | Bitsgewijs naar links verschuiven | De waarde van de linker operand wordt met het aantal bits naar links verplaatst gespecificeerd door de juiste operand. | x<< |
Laten we elke operator één voor één begrijpen.
Bitsgewijze AND-operator
De Python Bitsgewijze AND (&) operator neemt twee bitpatronen van gelijke lengte als parameters. De twee-bit gehele getallen worden vergeleken. Als de bits in de vergeleken posities van de bitpatronen 1 zijn, dan is de resulterende bit 1. Zo niet, dan is deze 0.
Voorbeeld: Neem twee bitwaarden X en Y, waarbij X = 7= (111)2en Y = 4 = (100)2. Neem Bitwise en van zowel X als y
kaart Java
Opmerking: Hier, (111)2vertegenwoordigen een binair getal.

a = 10 b = 4 # Print bitwise AND operation print('a & b =', a & b)> Uitvoer
a & b = 0>
Bitwise OR-operator
De Python bitsgewijze OR (|) De operator neemt twee bitontwerpen met gelijke lengte als grenzen; als de twee bits in de bekeken positie 0 zijn, is de volgende bit nul. Zo niet, dan is het 1.
Voorbeeld: Neem twee bitwaarden X en Y, waarbij X = 7= (111)2en Y = 4 = (100)2. Neem Bitwise OR van zowel X als Y

a = 10 b = 4 # Print bitwise OR operation print('a | b =', a | b)> Uitvoer
a | b = 14>
Bitwise XOR-operator
De Python Bitwise XOR (^)-operator ook bekend als de exclusieve OR-operator, wordt gebruikt om de XOR-bewerking op twee operanden uit te voeren. XOR staat voor exclusief of, en retourneert waar als en slechts dan als precies één van de operanden waar is. In de context van bitsgewijze bewerkingen vergelijkt het overeenkomstige bits van twee operanden. Als de bits verschillend zijn, retourneert het 1; anders wordt 0 geretourneerd.
Voorbeeld: Neem twee bitwaarden X en Y, waarbij X = 7= (111)2 en Y = 4 = (100)2. Neem Bitwise en van zowel X als Y

a = 10 b = 4 # print bitwise XOR operation print('a ^ b =', a ^ b)> Uitvoer
a ^ b = 14>
Bitwise NIET-operator
De voorgaande drie bitsgewijze operatoren zijn binaire operatoren, waarvoor twee operanden nodig zijn om te kunnen functioneren. In tegenstelling tot de anderen werkt deze operator echter met slechts één operand.
De Python Bitwise Not (~) Operator werkt met een enkele waarde en retourneert het complement ervan. Dit betekent dat alle bits in de waarde worden omgeschakeld, waarbij 0 bits worden omgezet in 1 en 1 bits in 0, wat resulteert in het ene complement van het binaire getal.
Voorbeeld : Neem twee bitwaarden X en Y, waarbij X = 5= (101)2 . Neem Bitwise NOT van X.

a = 10 b = 4 # Print bitwise NOT operation print('~a =', ~a)> Uitvoer
~a = -11>
Bitsgewijze verschuiving
Deze operatoren worden gebruikt om de bits van een getal naar links of rechts te verschuiven, waardoor het getal respectievelijk door twee wordt vermenigvuldigd of gedeeld. Ze kunnen worden gebruikt als we een getal moeten vermenigvuldigen of delen door twee.
Python Bitsgewijze rechtsverschuiving
Verschuift de bits van het getal naar rechts en vult als resultaat 0 op de lege plekken links (vult 1 in het geval van een negatief getal). Hetzelfde effect als het delen van een getal met een macht van twee.
Example 1: a = 10 = 0000 1010 (Binary) a>> 1 = 0000 0101 = 5 Voorbeeld 2: a = -10 = 1111 0110 (binair) a>> 1 = 1111 1011 = -5>Python
a = 10 b = -10 # print bitwise right shift operator print('a>> 1 =', a>> 1) print('b>> 1 =', b>> 1)> Uitvoer
a>> 1 = 5 b>> 1 = -5>
Python Bitsgewijze linksverschuiving
Verschuift de bits van het getal naar links en vult daardoor 0 op de lege plekken rechts. Hetzelfde effect als het vermenigvuldigen van het getal met een macht van twee.
Example 1: a = 5 = 0000 0101 (Binary) a << 1 = 0000 1010 = 10 a << 2 = 0001 0100 = 20 Example 2: b = -10 = 1111 0110 (Binary) b << 1 = 1110 1100 = -20 b << 2 = 1101 1000 = -40>Python
a = 5 b = -10 # print bitwise left shift operator print('a << 1 =', a << 1) print('b << 1 =', b << 1)> Uitgang:
a << 1 = 10 b << 1 = -20>
Bitwise-operatoroverbelasting
Overbelasting van de machinist betekent het geven van een uitgebreide betekenis die verder gaat dan hun vooraf gedefinieerde operationele betekenis. Operator + wordt bijvoorbeeld gebruikt om twee gehele getallen op te tellen, maar ook om twee tekenreeksen samen te voegen en twee lijsten samen te voegen. Dit is haalbaar omdat de ‘+’ operator overbelast wordt door de int-klasse en de str-klasse. Het is je misschien opgevallen dat dezelfde ingebouwde operator of functie verschillend gedrag vertoont voor objecten van verschillende klassen, dit wordt genoemd Overbelasting van de machinist .
Hieronder ziet u een eenvoudig voorbeeld van overbelasting van Bitwise-operators.
compatibiliteitstestenPython
# Python program to demonstrate # operator overloading class Geek(): def __init__(self, value): self.value = value def __and__(self, obj): print('And operator overloaded') if isinstance(obj, Geek): return self.value & obj.value else: raise ValueError('Must be a object of class Geek') def __or__(self, obj): print('Or operator overloaded') if isinstance(obj, Geek): return self.value | obj.value else: raise ValueError('Must be a object of class Geek') def __xor__(self, obj): print('Xor operator overloaded') if isinstance(obj, Geek): return self.value ^ obj.value else: raise ValueError('Must be a object of class Geek') def __lshift__(self, obj): print('lshift operator overloaded') if isinstance(obj, Geek): return self.value << obj.value else: raise ValueError('Must be a object of class Geek') def __rshift__(self, obj): print('rshift operator overloaded') if isinstance(obj, Geek): return self.value>> obj.value else: raise ValueError('Moet een object van klasse Geek zijn') def __invert__(self): print('Invert operator overbelast') return ~self.value # Chauffeurscode if __name__ == '__main__': a = Geek(10) b = Geek(12) print(a & b) print(a | b) print(a ^ b) print(a<< b) print(a>> b) print(~a)> Uitgang:
And operator overloaded 8 Or operator overloaded 14 Xor operator overloaded 8 lshift operator overloaded 40960 rshift operator overloaded 8 Invert operator overloaded -11>
Opmerking: Voor meer informatie over overbelasting van de machinist Klik hier .