Unsigned And Signed Integers
Stell dir vor, du hast eine Keksdose. Ja, genau, die Keksdose. Und jetzt stell dir vor, diese Keksdose kann nicht nur Kekse *enthalten*, sondern auch *verschwinden lassen*… klingt komisch, oder?
Das ist im Prinzip der Unterschied zwischen Signed Integers und Unsigned Integers in der Welt der Computer. Unsigned Integers sind wie unsere Keksdose, die nur Kekse aufnehmen kann. Keine negativen Kekse, kein "minus drei Kekse". Nur Kekse! Sagen wir, sie kann maximal 255 Kekse fassen. Das ist doch schon mal was, oder?
Signed Integers hingegen… die sind ein bisschen komplizierter. Sie können Kekse haben, oder sie können... Kekse *schulden*! Sie haben ein Vorzeichen. Ein Plus für "Ich habe Kekse" und ein Minus für "Oh oh, ich schulde jemandem Kekse." Wenn unsere Keksdose mit Vorzeichen auch 255 Zustände haben kann, dann geht es von -128 bis +127. Klingt fair, oder? Die Hälfte für "habe", die Hälfte für "schulde".
Das große Dilemma: Was wähle ich?
Jetzt kommt der Knackpunkt: Wann benutze ich was? Unsigned, wenn ich sicher weiß, dass ich niemals negative Werte brauche. Zum Beispiel, die Anzahl der Aufrufe eines YouTube-Videos. Das wird hoffentlich nie negativ! (Obwohl, manchmal...
Signed, wenn es eine Möglichkeit gibt, dass meine Zahl negativ werden könnte. Temperaturen zum Beispiel! Oder der Kontostand nach dem Kauf dieser einen *unwiderstehlichen* Sache.
Aber hier ist meine unpopuläre Meinung: Ich finde Unsigned Integers unterschätzt!
Warum ich Unsigned Integers mag (und du vielleicht auch)
Erstens: Sie sind effizienter! Sie nutzen den ganzen Zahlenbereich für positive Werte. Mehr Kekse für weniger Platz! Klingt nach einem guten Deal, oder? Stell dir vor, du hast zwei gleich große Keksdosen. Die Unsigned-Dose kann 255 Kekse fassen, die Signed-Dose nur 127! Wer würde da nicht die Unsigned-Dose wählen?
Zweitens: Sie sind einfacher zu verstehen! Keine komplizierten Vorzeichen, keine Überlegungen, ob die Zahl positiv oder negativ sein könnte. Einfach nur Zahlen. Reine, unverfälschte Anzahl von irgendwas.
Drittens: Manchmal *wissen* wir einfach, dass etwas nicht negativ werden kann! Warum dann die zusätzliche Komplexität einführen? Warum das Risiko eingehen, Fehler zu machen, weil man das Vorzeichen vergessen hat?
Klar, Signed Integers haben ihren Platz. Keine Frage. Aber ich glaube, viele von uns greifen viel zu schnell zu ihnen, ohne wirklich darüber nachzudenken, ob ein Unsigned Integer nicht die bessere Wahl wäre.
Die Sache mit dem Overflow
Ein kleines Warnsignal noch: Beide Arten von Integers können "überlaufen". Stell dir vor, deine Unsigned Keksdose kann 255 Kekse fassen, und du versuchst, 256 hineinzustopfen. Was passiert? Die Dose läuft über! Im Computer bedeutet das, dass die Zahl wieder von vorne beginnt. Aus 255 wird plötzlich 0! Autsch!
Bei Signed Integers ist es noch schlimmer. Wenn du den maximalen Wert (z.B. 127) überschreitest, springt die Zahl ins Negative! Ein positiver Kontostand wird plötzlich zu Schulden! Doppelt Autsch!
"Darum: Immer aufpassen, dass du deine Integers nicht überlastest! Sonst gibt's böse Überraschungen."
Also, das nächste Mal, wenn du in deinem Code eine Variable deklarierst, denk an unsere Keksdosen. Brauchst du wirklich das Vorzeichen? Oder reicht eine einfache, ehrliche, Unsigned-Integer-Keksdose?
Ich plädiere für mehr Unsigned Integers in der Welt! Wer ist dabei? (Bringt Kekse mit!)
