Website-Suche

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 OperatorBeschreibungEinfaches Beispiel
&Bitweiser UND-Operator10 & 7=2
Bitweiser ODER-Operator
^Bitweiser XOR-Operator10 ^7=13
~Bitweiser Eins Komplement Operator~10=-11
<<Bitweiser Linksverschiebeoperator10 << 2=40
>>Bitweiser Rechtsverschiebeoperator10>>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
>>> 

Python Bitweise Und Operator

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

Python Bitweise Oder Operator

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

Python Bitweise XOR-Operator

4. Bitweiser Eins-Komplement-Operator

Der Eins-Komplement einer Zahl ‚A‘ ist gleich - (A + 1).

>>> ~10
-11
>>> ~-10
9
>>> 

Python Bitweise Eins-Komplement-Operator

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

Python Bitweise Linksverschiebungsoperator

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 Rechtsverschiebungsoperator

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