6.2.4. Bitoperatoren (S)#
Zur Vollständigkeit listen wir auch noch die sog. Bitoperatoren auf. Diese manipulieren ganze Zahlen in ihrer Binärdarstellung.
Erinnern Sie sich an den Abschnitt Repräsentation? Dort haben wir beschrieben wie schlussendlich jeder Wert, egal ob Zahl, Zeichen, Bild, Ton als Binärcode im Speicher liegt. Bitoperatoren nehmen diesen Binärwert und verarbeiten bzw. kombinieren ihn. Dabei wird jedes Bit des einen Werts mit dem Bit des anderen Werts kombiniert. Unsere Gatter aus dem Abschnitt Manipulation bilden den Grundstock für eine derartige Verarbeitung.
Python bietet uns an diese maschinennahen Operationen auf Zahlen anzuwenden.
Zum Beispiel, kombinieren wir mit 5 & 4 jedes Bit der Zahl 5 mit dem and der Zahl 4.
Dies nennen wir das bitweise UND.
5 & 4
4
Jedes Bit der Zahl \(5_{10} = 0101_2\) und \(4_{10} = 0100_2\) wird durch eine AND-Gatter gejagt. Dies nennen wir auch bitweises UND der Binärzahlen \(0101_2\) und \(0010_2\):
Wenn Sie an dieser Stelle Probleme mit Binärzahlen haben, lesen sie Abschnitt Zahlen im Binärsystem. Folgende bitweisen Operationen stehen Ihnen in zur Verfügung:
Operator |
Beschreibung |
Beispiel |
Ergebnis |
|---|---|---|---|
|
UND von |
|
|
|
ODER von |
|
|
|
exklusives ODER von |
|
|
|
Bitverschiebung von |
|
|
|
Bitverschiebung von |
|
|
Weshalb ist 10 ^ 3 gleich 9?
Die ^-Operation steht für das sog. exklusive ODER gesprochen entweder oder.
Das exklusive oder \(x \oplus y\) ergibt 1 genau dann wenn entweder \(x\) oder \(y\) (nicht aber beide) gleich 1 sind.
Es gilt \(10_{10} = 01010_2\) und \(3_{10} = 00011_2\).
Für ganze Zahlen entspricht die Bitverschiebung um ein Bit nach links der Multiplikation mit 2.
Die Verschiebung um ein Bit nach rechts, hingegen der ganzzahligen Division mit 2.
Deshalb ist 8 << 3 gleich
und 8 >> 2 gleich