Rheinwerk Computing < openbook >

 
Inhaltsverzeichnis
1 Einleitung
2 Die Programmiersprache Python
Teil I Einstieg in Python
3 Erste Schritte im interaktiven Modus
4 Der Weg zum ersten Programm
5 Kontrollstrukturen
6 Dateien
7 Das Laufzeitmodell
8 Funktionen, Methoden und Attribute
9 Informationsquellen zu Python
Teil II Datentypen
10 Das Nichts – NoneType
11 Operatoren
12 Numerische Datentypen
13 Sequenzielle Datentypen
14 Zuordnungen
15 Mengen
16 Collections
17 Datum und Zeit
18 Aufzählungstypen – Enum
Teil III Fortgeschrittene Programmiertechniken
19 Funktionen
20 Modularisierung
21 Objektorientierung
22 Ausnahmebehandlung
23 Iteratoren
24 Kontextobjekte
25 Manipulation von Funktionen und Methoden
Teil IV Die Standardbibliothek
26 Mathematik
27 Kryptografie
28 Reguläre Ausdrücke
29 Schnittstelle zu Betriebssystem und Laufzeitumgebung
30 Kommandozeilenparameter
31 Dateisystem
32 Parallele Programmierung
33 Datenspeicherung
34 Netzwerkkommunikation
35 Debugging und Qualitätssicherung
36 Dokumentation
Teil V Weiterführende Themen
37 Anbindung an andere Programmiersprachen
38 Distribution von Python-Projekten
39 Grafische Benutzeroberflächen
40 Python als serverseitige Programmiersprache im WWW – ein Einstieg in Django
41 Wissenschaftliches Rechnen
42 Insiderwissen
43 Von Python 2 nach Python 3
A Anhang
Stichwortverzeichnis

Download:
- Beispielprogramme, ca. 464 KB

Jetzt Buch bestellen
Ihre Meinung?

Spacer
<< zurück
Python 3 von Johannes Ernesti, Peter Kaiser
Das umfassende Handbuch
Buch: Python 3

Python 3
Pfeil 12 Numerische Datentypen
Pfeil 12.1 Arithmetische Operatoren
Pfeil 12.2 Vergleichende Operatoren
Pfeil 12.3 Konvertierung zwischen numerischen Datentypen
Pfeil 12.4 Ganzzahlen – int
Pfeil 12.4.1 Zahlensysteme
Pfeil 12.4.2 Bit-Operationen
Pfeil 12.4.3 Methoden
Pfeil 12.5 Gleitkommazahlen – float
Pfeil 12.6 Boolesche Werte – bool
Pfeil 12.6.1 Logische Operatoren
Pfeil 12.6.2 Wahrheitswerte nicht-boolescher Datentypen
Pfeil 12.6.3 Auswertung logischer Operatoren
Pfeil 12.7 Komplexe Zahlen – complex
 
Zum Seitenanfang

12.4    Ganzzahlen – int Zur vorigen ÜberschriftZur nächsten Überschrift

Für den Raum der ganzen Zahlen gibt es in Python den Datentypen int. Im Gegensatz zu vielen anderen Programmiersprachen unterliegt dieser Datentyp in seinem Wertebereich keinen prinzipiellen Grenzen, was den Umgang mit großen ganzen Zahlen in Python sehr komfortabel macht.[ 29 ](Dies ist eine Neuerung in Python 3.0. Zuvor existierten zwei Datentypen für ganze Zahlen: int für den begrenzten Zahlenraum von 32 Bit bzw. 64 Bit sowie long mit einem unbegrenzten Wertebereich.)

Wir haben bereits viel mit ganzen Zahlen gearbeitet, sodass die Verwendung von int eigentlich keiner Demonstration mehr bedarf. Der Vollständigkeit halber dennoch ein kleines Beispiel:

>>> i = 1234
>>> i
1234
>>> p = int(5678)
>>> p
5678

Seit Python 3.6 kann ein Unterstrich verwendet werden, um die Ziffern eines Literals zu gruppieren:

>>> 1_000_000
1000000
>>> 1_0_0
100

Die Gruppierung ändert nichts am Zahlenwert des Literals, sondern dient dazu, die Lesbarkeit von Zahlenliteralen zu erhöhen. Ob und wie Sie die Ziffern gruppieren, bleibt Ihnen überlassen.

 
Zum Seitenanfang

12.4.1    Zahlensysteme Zur vorigen ÜberschriftZur nächsten Überschrift

Ganze Zahlen können in Python in mehreren Zahlensystemen[ 30 ](Sollten Sie nicht wissen, was ein Zahlensystem ist, können Sie diesen Abschnitt problemlos überspringen. ) geschrieben werden:

  • Zahlen, die wie im oben dargestellten Beispiel ohne ein spezielles Präfix geschrieben sind, werden im Dezimalsystem (Basis 10) interpretiert. Beachten Sie, dass einer solchen Zahl keine führenden Nullen vorangestellt werden dürfen:
    v_dez = 1337
  • Das Präfix 0o (»Null-o«) kennzeichnet eine Zahl, die im Oktalsystem (Basis 8) geschrieben wurde. Beachten Sie, dass hier nur Ziffern von 0 bis 7 erlaubt sind:
    v_okt = 0o2471
    Das kleine »o« im Präfix kann auch durch ein großes »O« ersetzt werden. Wir empfehlen Ihnen jedoch, stets ein kleines »o« zu verwenden, da das große »O« in vielen Schriftarten von der Null kaum zu unterscheiden ist.[ 31 ](Bis zu Version 3.0 wurde in Python, wie beispielsweise in C auch, die »0« als Präfix für Oktalzahlen verwendet. )
  • Die nächste und weitaus gebräuchlichere Variante ist das Hexadezimalsystem (Basis 16), das durch das Präfix 0x bzw. 0X (Null-x) gekennzeichnet wird. Die Zahl selbst darf aus den Ziffern 09 und den Buchstaben AF bzw. af gebildet werden:
    v_hex = 0x5A3F
  • Neben dem Hexadezimalsystem ist in der Informatik das Dualsystem, auch Binärsystem (Basis 2), von entscheidender Bedeutung. Seit Version 3.0 unterstützt Python ein eigenes Literal für Dualzahlen. Diese werden analog zu den vorangegangenen Literalen durch das Präfix 0b eingeleitet:
    v_bin = 0b1101
    Im Dualsystem dürfen nur die Ziffern 0 und 1 verwendet werden.

Vielleicht möchten Sie sich nicht auf diese vier Zahlensysteme beschränken, die von Python explizit unterstützt werden, sondern ein exotischeres verwenden. Natürlich gibt es in Python nicht für jedes mögliche Zahlensystem ein eigenes Literal. Stattdessen können Sie sich folgender Schreibweise bedienen:

v_6 = int("54425", 6)

Es handelt sich um eine alternative Methode, eine Instanz des Datentyps int zu erzeugen und mit einem Anfangswert zu versehen. Dazu werden in den Klammern ein String, der den gewünschten Initialwert in dem gewählten Zahlensystem enthält, sowie die Basis dieses Zahlensystems als ganze Zahl geschrieben. Beide Werte müssen durch ein Komma getrennt werden. Im Beispiel wurde das Sechsersystem verwendet.

Python unterstützt Zahlensysteme mit einer Basis von 2 bis 36. Wenn ein Zahlensystem mehr als zehn verschiedene Ziffern zur Darstellung einer Zahl benötigt, werden zusätzlich zu den Ziffern 0 bis 9 die Buchstaben A bis Z des englischen Alphabets verwendet.

v_6 hat jetzt den Wert 7505 im Dezimalsystem.

Für alle Zahlensystem-Literale ist die Verwendung eines negativen Vorzeichens möglich:

>>> -1234
-1234
>>> -0o777
-511
>>> -0xFF
-255
>>> -0b1010101
-85

Beachten Sie, dass es sich bei den Zahlensystemen nur um eine alternative Schreibweise des gleichen Wertes handelt. Der Datentyp int springt beispielsweise nicht in eine Art Hexadezimalmodus, sobald er einen solchen Wert enthält, sondern das Zahlensystem ist nur bei Zuweisungen oder Ausgaben von Bedeutung. Standardmäßig werden alle Zahlen im Dezimalsystem ausgegeben:

>>> v1 = 0xFF
>>> v2 = 0o777
>>> v1
255
>>> v2
511

Wir werden später im Zusammenhang mit Strings darauf zurückkommen, wie sich Zahlen in anderen Zahlensystemen ausgeben lassen.

 
Zum Seitenanfang

12.4.2    Bit-Operationen Zur vorigen ÜberschriftZur nächsten Überschrift

Wie bereits gesagt, hat das Dualsystem oder auch Binärsystem in der Informatik eine große Bedeutung. Für den Datentyp int sind daher einige zusätzliche Operatoren definiert, die sich explizit auf die binäre Darstellung der Zahl beziehen:

Operator Erw. Zuweisung Ergebnis
x & y x &= y bitweises UND von x und y (AND)
x | y x |= y bitweises nicht ausschließendes ODER von x und y (OR)
x ^ y x ^= y bitweises ausschließendes ODER von x und y (XOR)
~x bitweises Komplement von x
x << n x <<= n Bit-Verschiebung um n Stellen nach links
x >> n x >>= n Bit-Verschiebung um n Stellen nach rechts

Tabelle 12.5    Bit-Operatoren des Datentyps int

Da vielleicht nicht jedem unmittelbar klar ist, was die einzelnen Operationen bewirken, möchten wir sie im Folgenden im Detail besprechen.

Bitweises UND

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 dort eine 1, wo beide der jeweiligen Bits der Operanden 1 sind, und sonst eine 0. Dies veranschaulicht Abbildung 12.1:

Bitweises UND

Abbildung 12.1    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:

>>> 107 & 25
9

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.

Bitweises ODER

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 12.2 veranschaulicht dies.

Bitweises nicht ausschließendes ODER

Abbildung 12.2    Bitweises nicht ausschließendes ODER

Bitweises ausschließendes ODER

Das bitweise ausschließende ODER (auch exklusives 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 eine 0, wo sie gleich sind. Dies zeigt Abbildung 12.3.

Bitweises exklusives ODER

Abbildung 12.3    Bitweises exklusives ODER

Bitweises Komplement

Das bitweise Komplement bildet das sogenannte Einerkomplement einer Dualzahl, das der Negation aller vorkommenden Bits entspricht. In Python ist dies auf Bit-Ebene 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 ist folgendermaßen definiert:[ 32 ](Das ist sinnvoll, da man zur Darstellung negativer Zahlen in abgeschlossenen Zahlenräumen das sogenannte Zweierkomplement verwendet. Dieses erhalten Sie, indem Sie zum Einerkomplement 1 addieren.
Also: –x = Zweierkomplement von x = ~x + 1
Daraus folgt: ~x = –x – 1 )

~x = –x–1

Bit-Verschiebung

Bei der Bit-Verschiebung wird die Bit-Folge in der binären Darstellung des ersten Operanden um die durch den zweiten Operanden gegebene Anzahl Stellen nach links bzw. rechts verschoben. Auf der rechten Seite entstehende Lücken werden mit Nullen gefüllt, und das Vorzeichen des ersten Operanden bleibt erhalten. Abbildung 12.4 und Abbildung 12.5 veranschaulichen eine Verschiebung um zwei Stellen nach links bzw. nach rechts.

Bit-Verschiebung um zwei Stellen nach links

Abbildung 12.4    Bit-Verschiebung um zwei Stellen nach links

Bit-Verschiebung um zwei Stellen nach rechts

Abbildung 12.5    Bit-Verschiebung um zwei Stellen nach rechts

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

Die Bit-Verschiebung ist in Python ähnlich wie der Komplementoperator arithmetisch implementiert. Ein Shift um x Stellen nach rechts entspricht einer ganzzahligen Division durch 2x. Ein Shift um x Stellen nach links entspricht einer Multiplikation mit 2x.

 
Zum Seitenanfang

12.4.3    Methoden Zur vorigen ÜberschriftZur nächsten Überschrift

Der Datentyp int verfügt über eine Methode, die sich auf die Binärdarstellung der ganzen Zahl bezieht. Die Methode bit_length berechnet die Anzahl Stellen, die für die Binärdarstellung der Zahl benötigt werden.

>>> (36).bit_length()
6
>>> (4345).bit_length()
13

Die Binärdarstellung der 36 ist 100100, und die der 4345 ist 1000011111001. Damit benötigen die beiden Zahlen 6 bzw. 13 Stellen für ihre Binärdarstellung.

[»]  Hinweis

Beachten Sie, dass die Klammern um die Zahlenliterale bei ganzen Zahlen benötigt werden, da es sonst zu Doppeldeutigkeiten mit der Syntax für Gleitkommazahlen kommen könnte.

 


Ihre Meinung

Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.

<< zurück
 Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: Python 3 Python 3
Jetzt Buch bestellen

 Buchempfehlungen
Zum Rheinwerk-Shop: Einstieg in Python
Einstieg in Python


Zum Rheinwerk-Shop: Python. Der Grundkurs
Python. Der Grundkurs


Zum Rheinwerk-Shop: Algorithmen mit Python
Algorithmen mit Python


Zum Rheinwerk-Shop: Objektorientierte Programmierung
Objektorientierte Programmierung


Zum Rheinwerk-Shop: Raspberry Pi. Das umfassende Handbuch
Raspberry Pi. Das umfassende Handbuch


Zum Rheinwerk-Shop: Roboter-Autos mit dem Raspberry Pi
Roboter-Autos mit dem Raspberry Pi


Zum Rheinwerk-Shop: Neuronale Netze programmieren mit Python
Neuronale Netze programmieren mit Python


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo

 
 


Copyright © Rheinwerk Verlag GmbH 2020
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

 
[Rheinwerk Computing]

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern