Bit-Operationen in Python

0 | 18225 Aufrufe
Sie können diese Wikiseite nach der Anmeldung auf Webmasterpro bearbeiten. Helfen Sie mit und verbessern Sie "Bit-Operationen in Python" mit Ihrem Wissen!

Anzeige Hier werben

Neben dem Hexadezimal- und dem Oktalsystem ist in der Informatik das Dualsystem von großer Bedeutung. Das Dualsystem, oder auch Binärsystem, ist ein Zahlensystem mit der Basis 2. Eine ganze Zahl wird also als Folge von Einsen und Nullen dargestellt. In Python existiert kein Literal, mit dem Zahlen in Dualschreibweise direkt verwendet werden könnten, jedoch sind für die Datentypen int und long einige Operatoren definiert, die sich explizit auf die binäre Darstellung der Zahl beziehen:

Operator
Ergebnis
x & y
Bitweises UND von x und y (AND)
x | y Bitweises nicht ausschließendes ODER von x und y (OR)
x ^ y Bitweises ausschließendes ODER von x und y (XOR)
~x Bitweises Komplement von x
x << n Bitverschiebung um n Stellen nach links
x >> n Bitverschiebung um n Stellen nach rechts

Auch hier sind erweiterte Zuweisungen mithilfe der folgenden Operatoren möglich:

Operator
Entsprechung
x &= y
x = x & y
x |= y x = x | y
x ^= y x = x ^ y
x <<= n x = x << n
x >>= n x = x >> n

Da vielleicht nicht jedem unmittelbar klar ist, was die einzelnen Operationen bewirken, möchten wir sie im Folgenden im Detail besprechen. Das bitweise UND zweier Zahlen wird gebildet, indem beide Zahlen in ihrer Binärdarstellung Bit für Bit miteinander verknüpft werden. Die resultierende Zahl hat in ihrer Binärdarstellung genau da eine 1, wo die jeweiligen Bits der Operanden beide eine 1 haben, und sie hat da eine 0, wo das nicht gilt. Dies soll durch die folgende Grafik veranschaulicht werden:

Bild zu Bit-Operationen in Python
Bitweises Und

Im interaktiven Modus von Python probieren wir aus, ob das bitweise UND mit den in der Grafik gewählten Operanden tatsächlich das erwartete Ergebnis zurückgibt:

>>> 106 & 12
8

Diese Prüfung des Ergebnisses werden wir nicht für jede Operation einzeln durchführen. Um allerdings mit den bitweisen Operatoren vertrauter zu werden, lohnt es sich, hier ein wenig zu experimentieren.

Das bitweise ODER zweier Zahlen wird gebildet, indem beide Zahlen in ihrer Binärdarstellung Bit für Bit miteinander verglichen werden. Die resultierende Zahl hat in ihrer Binärdarstellung genau da eine 1, wo mindestens eines der jeweiligen Bits der Operanden 1 ist. Abbildung 8.2 veranschaulicht dies.

Bild zu Bit-Operationen in Python
Bitweises nicht ausschließendes ODER

Das bitweise ausschließende ODER zweier Zahlen wird gebildet, indem beide Zahlen in ihrer Binärdarstellung Bit für Bit miteinander verglichen werden. Die resultierende Zahl hat in ihrer Binärdarstellung genau da eine 1, wo sich die jeweiligen Bits der Operanden voneinander unterscheiden, und da eine 0, wo sie gleich sind. Dies wird von Abbildung 8.3 veranschaulicht.

Bild zu Bit-Operationen in Python
Bitweises exklusives ODER

Anmerkung

Das ist sinnvoll, da man zur Darstellung negativer Zahlen in abgeschlossenen Zahlenräumen
das sogenannte Zweierkomplement verwendet. Dieses erhält man, indem man zum Einerkomplement
1 addiert.

Also: –x = Zweierkomplement von x = ~x + 1
Daraus folgt: ~ x = –x – 1

Das bitweise Komplement bildet das sogenannte Einerkomplement einer Dualzahl, das der Negation aller vorkommenden Bits entspricht. In Python ist dies auf Bitebene nicht möglich, da eine ganze Zahl in ihrer Länge unbegrenzt ist und das Komplement immer in einem abgeschlossenen Zahlenraum gebildet werden muss. Deswegen wird die eigentliche Bit-Operation zur arithmetischen Operation und folgendermaßen definiert [Siehe Anmerkung]:

~ x = –x – 1

Bei der Bitverschiebung wird die Bitfolge in der binären Darstellung des ersten Operanden um die durch den zweiten Operanden gegebene Anzahl Stellen nach links bzw. rechts verschoben. Die entstandene Lücke wird mit Nullen gefüllt. Die beiden folgenden Abbildungen veranschaulichen eine Verschiebung um zwei Stellen nach links bzw. nach rechts.

Bild zu Bit-Operationen in Python
Bitverschiebung

Die in der Bitdarstellung entstehenden Lücken auf der rechten bzw. linken Seite werden mit Nullen aufgefüllt.

Buchhinweis

Bild zu Bit-Operationen in Python

Dieser Artikel stammt aus dem Buch "Python – Das umfassende Handbuch" von Peter Kaiser und Johannes Ernesti und wurde uns von Galileo Design zur Verfügung gestellt hat. Das Buch kann über die Webseite des Galileo Verlag bestellt werden


Wikiseite bearbeiten

Diese Seite kann von jedem registrierten Benutzer bearbeitet werden. Bisher haben 4 Personen an der Seite "Bit-Operationen in Python" mitgewirkt.

Sie haben einen Fehler entdeckt oder möchten etwas ergänzen? Dann können Sie nach der Anmeldung "Bit-Operationen in Python" hier bearbeiten.

Mitarbeiter
  • Meine Schwerpunkte liegen im Bereich Grafikdesign, SEO und Management. Seit sieben Jahren bin ich als Geschäftsführer der Team23 GbR tätig, die Webdesign in Augsburg anbietet, sowie Webmasterpro.de betreut.
  • Ich bin Schüler eines Gymnasiums und beschäftige mich in meiner Freizeit seit vielen Jahren mit HTML- und CSS-Programmierung. Außerdem interessiere ich mich für PHP (WordPress, Drupal, ...), Ruby und Ruby on Rails.
  • hat keine Beschreibung angegeben. Eine Beschreibung kann man unter dem Punkt "Profil bearbeiten" im Kontrollzentrum eintragen.
  • hat keine Beschreibung angegeben. Eine Beschreibung kann man unter dem Punkt "Profil bearbeiten" im Kontrollzentrum eintragen.