bookmark_borderInteger – Ganze Zahlen

Tinyint

Die kleinste Speichergrösse für Zahlen ist der sogenannte Tinyint. Ein Tinyint ist genau ein Byte gross – was hoffentlich jetzt keine Überraschung ist. Wie Wiederholen: ein Byte hat 8 Bits. Jedes Bit hat 2 Speichermöglichkeiten. Man rechnet also 2^8=256 Möglichkeiten. Entsprechend kann der Tinyint alle Zahlen von 0 bis 255 darstellen. Es sind nur positive Zahlen möglich. Dieser Typ von Int wird aufgrund seiner Einschränkung (nur positive Zahlen möglich) heutzutage sehr selten oder überhaupt nie benutzt.

Smallint

Die nächste Grösse ist der smallint. Er ist genau 2 Byte gross. Doppelt so gross wie der Vorgänger. Wer jetzt erwartet, dass man also Zahlen bis 510 speichern kann – der irrt sich. Wir begegnen hier einem exponentiellen Wachstum. 2 Byte haben 16 Bit a 2 Speichermöglichkeiten. Die Anzahl der Optionen errechnet sich daher wie folgt: 2^16= 65’536 Möglichkeiten. Wie wir beim Tinyint gesehen haben, möchten wir auch negative Zahlen speichern können, also verwenden wir die Hälfte (32’768) Möglichkeiten um Minuszahlen zu speichern und die andere Hälfte um positive Zahlen zu speichern – oh und eine Option brauchen wir noch für die 0. Also können wir Zahlen von -32’768 bis + 32’767 speichern. Wer sich jetzt fragt, warum es bei den positiven Zahlen eine weniger ist als bei Minus – eben: wegen der 0.

int

Kommen wir zu der am häufigsten verwendeten Form: int. Dieser Datentyp ist 4 Byte grosse, doppelt so gross wie sein Vorgänger, und er hat entsprechend 2^32 Speichermöglichkeiten, das sind über vier Milliarden Möglichkeiten. Mehr als 2 Milliarden positive und mehr als 2 Milliarden negative. Daher ist dies der meistverwendete Typ, denn es gibt nur wenig Fälle, in denen noch grössere Zahlen abgespeichert werden müssen.

bigint

Aber ein paar Gelegenheiten mag es ja noch geben, also machen wir noch bigint mit 8 Byte und, ja, 2^64 anyone? Ich muss kurz Googeln wie diese Zahl heist^^ Trillionen genau. Also weit über 18 Trillionen Möglichkeiten. 9 Trillionen Positive und 9 Trillionen Negative.

bookmark_borderArrays

Bevor wir über (noch) kompliziertere Datentypen sprechen können, müssen wir über Arrays sprechen. Arrays kann man immer dann benutzen, wenn man eine bestimmte Menge eines bestimmten Datentyps einen anderen Datentyp ergibt. Versuchen wir das doch mal rein Verständnis halber mit Bananen.

Nehmen wir also an, Banane wäre ein Datentyp. Ich kann eine bestimmte Menge – üblicherweise exakt ein Kilo – in eine Bananenkiste stapeln. Dadurch kann einen neuen Datentyp «Bananenkiste» erhalten. Mehrere Bananenkisten zusammen ergeben einen Frachtcontainer (Nein – ich weiss nicht wie viele das sind – es geht hier ums Prinzip, nicht um Logistik), und so weiter.

In der IT werden Arrays sehr gerne benutzt, da digital alles auf eine Abfolge von Nullen und Einsen hinausläuft. Alles ist ein Array von einem Bit, wenn man so möchte. Trotzdem wird meistens direkt mit Bytes gearbeitet, also mit 8 Bit Blöcken – und ja: Ein Byte ist im Prinzip auch ein Array aus 8 Bit – vollkommen korrekt.

Alles Digitale könnte man also – wenn man wollte – als Array aus Bytes ausdrücken. Dieser Blogpost? Ein Array aus Bytes, ja. Deines Lieblings Netflix Serie? Auch ja!

List<>

In vielen Programmiersprachen gibt es zusätzlich noch Listen. Diese unterscheiden sich von Arrays dadurch, dass die exakte Anzahl im Voraus nicht bekannt ist (Ich weiss noch nicht, wie viele Bananen ich einpacken will). Das ist sozusagen eine Bananenkiste, welche automatisch mitwächst, wenn man mehr Bananen hineinlegt. Auf klassischen Festplatten haben Listen ein Nachteil: sie sind unter Umständen weniger schnell als Arrays. Wenn die Bananenkiste wachsen soll, der Frachtcontainer aber bereits voll ist, dann bleibt nichts anderes übrig, als eine neue Bananenkiste in einem neuen Container zu beginnen und die alte Kiste mit dem Hinweis zu versehen, dass es noch mehr Bananen in einer anderen Kiste gibt. Beim Einsammeln der Bananen habe ich dadurch länger, weil ich 2 Container abklappern muss. Wenn ich dagegen von Anfang an weis, wie viele Bananen ich einlagern muss, kann ich den entsprechenden Platz im Container reservieren. Mit dem wachsenden Einsatz von SSD’s wird dieser Nachteil aber je länger je mehr relativiert.