Startseite Über EasyKit Über EasyLab Produkte Partner Downloads Kontakt Suche

Datentypen

Über EasyLabDokumentation für EndbenutzerModellierungSoftware-Modell → Datentypen

In EasyLab ist jedem Wert, der im Programm berechnet wird, ein so genannter Datentyp zugeordnet. Dies betrifft Werte, die von Funktionsblöcken in der Datenflusssprache berechnet werden sowie Variablen, die beispielsweise für Übergangsbedingungen in der Ablaufsprache verwendet werden. Die häufigsten Typen sind Zahlen und Wahrheitswerte.

Weitere Themen auf dieser Seite:
  1. Wozu gibt es Datentypen?
  2. Datentyp "Ganzzahl"
  3. Datentyp "Kommazahl"
  4. Datentyp "Wahrheitswert"
  5. Umwandlung von Datentypen
  6. Bits und Speicherverbrauch

1. Wozu gibt es Datentypen?

Der Grund hierfür liegt in der Darstellung von Daten im Mikrocontroller bzw. auf einem Computer im Allgemeinen. Daten sind für den Mikrocontroller bzw. Computer eigentlich nur Anordnungen von Nullen und Einsen. Der Computer führt Berechnungen im Endeffekt immer direkt auf diesen Nullen und Einsen durch, d.h. er "weiß" gar nicht, was die Nullen und Einsen eigentlich bedeuten. Um diesen binären Daten eine Bedeutung zuzuweisen, muss man festlegen, wie sie zu interpretieren sind.

Beispiel


Eine Folge von 16 Nullen oder Einsen kann -- je nach Anwendung -- sehr unterschiedlich interpretiert werden:
  • Es könnte sich um eine Zahl handeln, die aus den 16 Bits gebildet wird. Nehmen wir an, dass die Folge lautet: 00010011 00110101. Diese Folge würde dann -- als vorzeichenlose 16-Bit Ganzzahl interpretiert -- den Wert 1*1 + 1*4 + 1*16 + 1*32 + 1*256 + 1*512 + 1*4096 = 4917 repräsentieren.
  • Genauso könnte es sich bei der Folge um zwei hintereinander gespeicherte 8-Bit-Zahlen handeln. Die erste Zahl hätte den Wert 11, die zweite den Wert 53.
  • Schließlich könnte man die Folge auch als 16 hintereinander abgespeicherte Wahrheitswerte ansehen, wobei eine Eins für "wahr" steht und eine Null für "falsch". Es könnte sich beispielsweise jeweils um die Information handeln, an welchen Tischen in einem Klassenzimmer mindestens ein Schüler sitzt. In diesem Fall wären also insgesamt 7 Tische belegt.
Die Nullen und Einsen erhalten also erst dann eine Bedeutung, wenn wir festlegen, wie die binären Daten zu interpretieren sind, d.h. was wir mit den Daten anfangen wollen. Dies geschieht über die Zuordnung von Datentypen zu den Daten.

Die häufigsten Typen sind Zahlen und Wahrheitswerte. Zahlen kann man grob in Ganzzahlen und Kommazahlen einteilen.

2. Datentyp "Ganzzahl"

Ganzzahlen gibt es aus technischen Gründen in verschiedenen Wertebereichen, d.h. manche Datentypen können einen größeren Wertebereich abdecken als andere. Die folgende Tabelle gibt einen Überblick über die zur Verfügung stehenden ganzzahligen Datentypen:

Name des Datentyps Bits Kleinster darstellbarer Wert Größter darstellbarer Wert
uint8 8 0 255
uint16 16 0 65535
uint32 32 0 4294967295
uint64 64 0 18446744073709551615
int8 8 -128 127
int16 16 -32768 32767
int32 32 -2147483648 2147483647
int64 64 -9223372036854775808 9223372036854775807

Hierbei steht ein "u" im Namen für Englisch "unsigned" (vorzeichenlos), was bedeutet, dass die entsprechende Zahl keine negativen Werte annehmen kann (der Wertebereich beginnt also bei Null). Die Zahl im Namen entspricht der Anzahl Bits ("Nullen und Einsen"), die zur Speicherung des Werts verwendet werden. Je mehr Bits verwendet werden, desto größere Zahlen können dargestellt werden. Für Ganzzahlen gilt: Ist das Ergebnis einer Berechnung nicht im Wertebereich der Zahl darstellbar, so wird in aller Regel ein falsches Ergebnis zurückgegeben. Daher ist darauf zu achten, dass immer ein Datentyp mit mindestens dem benötigten Wertebereich verwendet wird.

3. Datentyp "Kommazahl"

Auch Kommazahlen (genauer: Fließkommazahlen) lassen sich in mehrere Typen einteilen:

Name des Datentyps Bits Kleinster darstellbarer positiver Wert Größter darstellbarer positiver Wert Signifikante Stellen
float 16 ca. 10-37 ca. 1037 6
double 16 ca. 10-37 ca. 1037 10

Alle Kommazahlen sind immer vorzeichenbehaftet, d.h. negative Zahlen können immer dargestellt werden. Daher wird in der Tabelle nicht zwischen positiven und negativen Zahlen unterschieden. "1037" bedeutet dabei "eine 1 mit 37 Nullen" (eine sehr große Zahl). Der Schein trügt jedoch: Beide Datentypen können nur eine bestimmte Zahl an "signifikanten Stellen" abspeichern. Signifikant ist eine Stelle dann, wenn sie -- nachdem die Zahl in den Datentyp float oder double konvertiert wurde -- danach immer noch den selben Wert hat.

Beispiel


Ein beliebtes Beispiel ist die Abspeicherung der Zahl Pi (3,14159265358979323846...) im Computer.
  • Wird Pi in einer Variable vom Typ "float" gespeichert, so ist lediglich garantiert, dass die ersten Ziffern danach 3,14159 sind (6 signifikante Stellen). Welche Ziffer nach der 9 folgt, ist nicht definiert.
  • Wird Pi in einer Variable vom Typ "double" gespeichert, so ist garantiert, dass die ersten Ziffern danach 3,141592653 sind (10 signifikante Stellen). Welche Ziffer nach der 3 folgt, ist nicht definiert.
Die Typen unterscheiden sich also in der Genauigkeit, mit der sie Kommazahlen abspeichern. Es wird nicht immer der exakte Wert abgespeichert, den eine Berechnung ergibt, sondern ein darstellbarer Näherungswert. Wird der Typ "double" verwendet, so wird der "wahre" Wert im Allgemeinen genauer getroffen als beim Typ "float". Allerdings ist der dabei gemachte "Fehler" abhängig vom eigentlichen Wert, da bestimmte Zahlen exakter dargestellt werden können als andere. Um Probleme bei der Rundung von Zahlen zu vermeiden sollte - falls möglich - der Typ "double" verwendet werden.

4. Datentyp "Wahrheitswert"

Für Wahrheitswerte gibt es nur einen Datentypen namens bool.

Name des Datentyps Bits Darstellbare Werte
bool 1 (8) true, false

Ein Wahrheitswert repräsentiert genau eine Einzelinformation, d.h. eine Eins oder Null. Damit benötigt eine Variable vom Typ "bool" ein Bit Speicherplatz. In der Praxis ist es aufgrund technischer Limitationen sinnvoll, einen Wahrheitswert trotzdem 8 Bit belegen zu lassen und z.B. nur das niederwertigste Bit zu betrachten.

5. Umwandlung von Datentypen

Daten können von einem Datentyp in einen anderen konvertiert werden. Verwenden Sie dazu den Funktionsblock Typumwandlung, den Sie in der Kategorie Mathematik der Funktionsblockbibliothek finden.

6. Bits und Speicherverbrauch

Je mehr Flexibilität bei der Darstellung z.B. einer Zahl benötigt wird, desto mehr Bits muss diese Zahl haben. Dadurch wird auch klar, warum es für Zahlen eine so genaue Unterscheidung gibt: Wenn ein Entwickler weiß, dass er für eine Variable in einem bestimmten Programm nur einen bestimmten Wertebereich benötigt, so kann er einen Datentyp wählen, der weniger Bits verbraucht. Dadurch reduziert sich der Speicher, der zur Ausführung des Programms verwendet wird. Soll die Zahl abgespeichert werden (z.B. auf einer Festplatte), so reduziert sich dadurch auch der verbrauchte Speicherplatz auf dem Datenträger. Insbesondere in Mikrocontrollern ist Speicher eine wichtige Ressource und sollte nicht bedenkenlos verschwendet werden. Es empfiehlt sich daher, einen günstigen Datentyp auszuwählen, der einerseits mindestens den benötigten Bereich enthält und andererseits möglichst wenig Speicher belegt.