logo

Bitwise-operatoren voor Python

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.


OPERATORNAAMBESCHRIJVINGSYNTAXIS

Bitsgewijze AND-operator



&Bitsgewijs ENResultaatbit 1, als beide operandbits 1 zijn; anders resulteert bit 0.x & y

Bitwise OR-operator

|Bitsgewijze OFResultaatbit 1, als een van de operandbits 1 is; anders resulteert bit 0.x | En

Bitwise XOR-operator

^Bitsgewijze XORResultaatbit 1, als een van de operandbits 1 is, maar niet beide, anders is het resultaat bit 0.x^y

Bitwise NIET-operator



~Bitwijs NIET

Inverteert individuele bits.

~x

Python bitsgewijze rechtsverschuiving

>>Bitsgewijs naar rechts verschuiven

De waarde van de linker operand wordt met het aantal bits naar rechts verplaatst

gespecificeerd door de juiste operand.

x>>

Python bitsgewijze linksverschuiving

<<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.

Python
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

Python
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

Python
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.

Python
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.

compatibiliteitstesten
Python
# 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 .