Python bitweise Operatoren
Python-Bit-Operatoren werden verwendet, um bitweise Berechnungen mit Ganzzahlen durchzuführen. Die Ganzzahlen werden in das binäre Format umgewandelt und dann werden die Operationen bitweise durchgeführt, daher der Name Bit-Operatoren. Python-Bit-Operatoren funktionieren nur mit Ganzzahlen und das endgültige Ergebnis wird im dezimalen Format zurückgegeben. Python-Bit-Operatoren werden auch als binäre Operatoren bezeichnet.
Python bitweise Operatoren
Es gibt 6 bitweise Operatoren in Python. Die folgende Tabelle bietet kurze Informationen dazu.
| Bitweise Operator | Beschreibung | Einfaches Beispiel |
|---|---|---|
| & | Bitweiser UND-Operator | 10 & 7=2 |
| Bitweiser ODER-Operator | ||
| ^ | Bitweiser XOR-Operator | 10 ^7=13 |
| ~ | Bitweiser Eins Komplement Operator | ~10=-11 |
| << | Bitweiser Linksverschiebeoperator | 10 << 2=40 |
| >> | Bitweiser Rechtsverschiebeoperator | 10>>1=5 |
Lass uns diese Operatoren eins nach dem anderen betrachten und verstehen, wie sie funktionieren.
1. Bitweiser AND-Operator
Der bitweise AND-Operator in Python gibt 1 zurück, wenn beide Bits 1 sind, andernfalls 0.
>>> 10&7
2
>>>
2. Bitweiser ODER-Operator
Der bitweise ODER-Operator in Python gibt 1 zurück, wenn eines der Bits 1 ist. Wenn beide Bits 0 sind, gibt er 0 zurück.
>>> 10|7
15
>>>
3. Bitweiser XOR-Operator
Der bitweise XOR-Operator in Python gibt 1 zurück, wenn eines der Bits 0 und das andere Bit 1 ist. Wenn beide Bits 0 oder 1 sind, gibt er 0 zurück.
>>> 10^7
13
>>>
4. Bitweiser Eins-Komplement-Operator
Der Eins-Komplement einer Zahl ‚A‘ ist gleich - (A + 1).
>>> ~10
-11
>>> ~-10
9
>>>
5. Bitweise Linksverschiebungsoperator
Der bitweise Linksverschiebungsoperator in Python verschiebt die Bits des linken Operanden um die in dem rechten Operanden angegebene Anzahl nach links. Einfach gesagt, wird die binäre Zahl am Ende mit 0en aufgefüllt.
>>> 10 << 2
40
>>>
6. Bitweise Rechtsverschiebungsoperator
Der bitweise Rechtsverschiebungsoperator in Python ist genau das Gegenteil des bitweisen Linksverschiebungsoperators. Die Bits des linken Operanden werden für die angegebene Anzahl von Stellen nach rechts verschoben. Einfach ausgedrückt, die Bits auf der rechten Seite werden entfernt.
>>> 10 >> 2
2
>>>
Python-Bitweise-Operatorüberladung
Python unterstützt Operatorüberladung. Es gibt verschiedene Methoden, die wir implementieren können, um bitweise Operatoren für unsere benutzerdefinierten Objekte zu unterstützen.
| Bitweise Operator | Methode zur Implementierung |
|---|---|
| & | __und__(self, other) |
| ^ | __xor__(self, andere) |
| ~ | __invert__(self) |
| << | __lshift__(selbst, andere) |
| >> | __rshift__(selbst, andere) |
Hier ist ein Beispiel für eine bitweise Operatorüberladung für unser benutzerdefiniertes Objekt.
class Data:
id = 0
def __init__(self, i):
self.id = i
def __and__(self, other):
print('Bitwise AND operator overloaded')
if isinstance(other, Data):
return Data(self.id & other.id)
else:
raise ValueError('Argument must be object of Data')
def __or__(self, other):
print('Bitwise OR operator overloaded')
if isinstance(other, Data):
return Data(self.id | other.id)
else:
raise ValueError('Argument must be object of Data')
def __xor__(self, other):
print('Bitwise XOR operator overloaded')
if isinstance(other, Data):
return Data(self.id ^ other.id)
else:
raise ValueError('Argument must be object of Data')
def __lshift__(self, other):
print('Bitwise Left Shift operator overloaded')
if isinstance(other, int):
return Data(self.id << other)
else:
raise ValueError('Argument must be integer')
def __rshift__(self, other):
print('Bitwise Right Shift operator overloaded')
if isinstance(other, int):
return Data(self.id >> other)
else:
raise ValueError('Argument must be integer')
def __invert__(self):
print('Bitwise Ones Complement operator overloaded')
return Data(~self.id)
def __str__(self):
return f'Data[{self.id}]'
d1 = Data(10)
d2 = Data(7)
print(f'd1&d2 = {d1&d2}')
print(f'd1|d2 = {d1|d2}')
print(f'd1^d2 = {d1^d2}')
print(f'd1<<2 = {d1<<2}')
print(f'd1>>2 = {d1>>2}')
print(f'~d1 = {~d1}')
Ausgabe :
Bitwise AND operator overloaded
d1&d2 = Data[2]
Bitwise OR operator overloaded
d1|d2 = Data[15]
Bitwise XOR operator overloaded
d1^d2 = Data[13]
Bitwise Left Shift operator overloaded
d1<<2 = Data[40]
Bitwise Right Shift operator overloaded
d1>>2 = Data[2]
Bitwise Ones Complement operator overloaded
~d1 = Data[-11]
Wenn Sie mit der neuen String-Formatierung nicht vertraut sind, lesen Sie bitte f-Strings in Python.
Zusammenfassung
Python-Bitweiseoperatoren werden hauptsächlich in mathematischen Berechnungen verwendet. Wir können spezifische Methoden implementieren, um Bitweiseoperatoren auch für unsere benutzerdefinierten Klassenimplementierungen zu unterstützen.






