Suche
Close this search box.

Zählen wie ein Computer

Computer können sehr gut zählen. Aber meistens nur in engen Grenzen. Hier ein Einblick, woher diese Grenzen kommen und was beim Überschreiten der Grenzen schief läuft.

Dieser Artikel ist ausnahmsweise nicht politisch, aber eine Vorbereitung auf den Artikel vom Freitag.

An English 🇬🇧 version of this article is available here: Counting like a computer.

Zählen für Anfänger

Zählen können die meisten von uns schon so viele Jahre, dass wir uns gar nicht mehr erinnern, wann wir das erste Mal gezählt haben. Anfänglich wohl die meisten mit den Fingern. Zuerst war dann bei 10 Schluss, aber irgendwann wurde uns der Trick mit dem Zehnerübergang klar. Später haben wir ihn auf den Hunderter- und Tausenderübergang erweitert.

Dieses Video dürfte also für die wenigsten eine Überraschung darstellen. Auch nicht, dass der „Kilometerzähler“ links und die „Zähleruhr“ rechts dieselben Zählvorgänge abbilden.

„Einfaches“ Hochzählen im Zehnersystem mit dreistelligen Zahlen

Ein kleines Bisschen Unerwarteter dürfte es aber sein, wenn wir auf unserem dreistelligen „Kilometerzähler“ über 999 hinaus zählen. Da landen wir nicht bei 1000. Weil uns die vierte Stelle für die Tausender fehlt, wird diese abgeschnitten und wir landen wieder bei 000; es fehlt uns die Möglichkeit zum Tausenderübetrag. (Vielleicht erinnern sich einige noch an die Zeit, wo Autos fünfstellige Kilometerzähler hatten und man nach 100’000 gefahrenen Kilometern wieder ein „fabrikneues“ Auto hatte…)

Die Zähleruhr hat dasselbe Problem. Eigentlich also alles schon bekannt im Zehnersystem, nichts Neues.

Hochzählen über 999 hinaus gäbe 1000, aber wir haben nur drei Stellen…

Zählen für Computer

Nun wechseln wir aber mal ins Binärsystem, zu den Computern. Im Zehnersystem zählt die hinterste Stelle einfach, die zweithinterste zehnfach, die dritthinterste zehn-mal-zehn-, also hundertfach. Und an jeder Stelle haben wir die Auswahl unter ebenfalls zehn Ziffern, 0 bis 9.

ZifferViertletzteDrittletzteZweitletzteLetzte Stelle
Zehnersystem10*10*10 = 1000 = 10³10*10 = 100 = 10²10 = 10¹1 = 10⁰
Binärsystem
(=Zweiersystem)
2*2*2 = 8 = 2³2*2 = 4 = 2²2 = 2¹1 = 2⁰
Wertigkeit der Stellen in verschiedenen Stellenwertsystemen. (Am besten von rechts her zu lesen.)

Ganz ähnlich zählt man im Zweiersystem: Die hinterste Stelle zählt einfach, die zweithinterste zweifach, die dritthinterste zwei-mal-zwei-, also vierfach. Dafür reichen uns an jeder Stelle zwei Ziffern, 0 und 1 (oder anders gesagt: Strom aus oder ein).

Zweiersystemals RechnungZehnersystem
0000*4 + 0*2 + 0*10
0010*4 + 0*2 + 1*11
0100*4 + 1*2 + 0*12
0110*4 + 1*2 + 1*13
1001*4 + 0*2 + 0*14
1011*4 + 0*2 + 1*15
1101*4 + 1*2 + 0*16
1111*4 + 1*2 + 1*17
Die ersten 8 Zahlen im Zweiersystem

Wie im Zehnersystem gilt auch hier: Sobald die höchste Ziffer eins höher werden müsste, wird die nächste Stelle um eins erhöht (der Übertrag), sofern sie existiert. Im Zehnersystem ist das beim Wechsel von 9→0, im Zweiersystem schon bei 1→0. Die zweite Stelle wird also jedes zweite Mal eines erhöht.

Auch hier haben wir eine Diskontinuität, wenn wir von „111“ nach „000“ „hochzählen“. Mit einer endlichen Anzahl Bits für die Darstellung der Zahl lässt sich das aber nie vermeiden, nur hinauszögern.

Auch hier ist nach 3 Stellen Schluss, es gibt kein „1000“. Also wechselt es nach 7 wieder zu 0.

Negative Zahlen

In vielen alltäglichen Situationen reichen uns die positiven Zahlen (und die Null). Dann könnten wir hier abschliessen.

Manchmal ist es aber ganz praktisch, auch mit negativen Zahlen rechnen zu können. Beispielsweise auf dem Celsius-Thermometer im Winter. Oder um auch in der Nähe des Toten Meeres einheitlich mit „Meter über Meer“ rechnen zu können. Oder einfach um Differenzen, beispielsweise bei Zu- und Abgängen, einheitlich darstellen zu können.

Bei Binärzahlen, wie wir sie oben kennengelernt haben, hat sich das Zweierkomplement durchgesetzt: Das Geniale an dieser Darstellung: Wir müssen an unseren Rechenvorgängen nichts ändern: Zählen, addieren oder subtrahieren laufen im Computer drin auf exakt dieselbe Weise ab, als ob alle Zahlen positiv wären. Wir denken uns einfach alle Zahlen, deren höchstwertiges Bit eine 1 ist, als negativ. Nur bei der Ein- und Ausgabe brauchen wir etwas Gehirnschmalz.

(Zumindest wenn wir Multiplikation, Division, Grössenvergleiche oder der Test, ob bei einer Rechenoperation ein Überlauf aufgetreten ist, ignorieren. Und Fliesskommazahlen, also Zahlen mit Nachkommastellen.)

Ein weiterer Vorteil des Zweierkomplements: Wir haben weiterhin nur eine Diskontinuität, bei dreistelligen Zahlen zwischen „011“ (+3) und „100“ (−4). Von −4 bis +3 können wir aber durchgehend hochzählen.

Wir ändern nichts an den Zahlen, wir denken uns einfach die Hälfte der (vormals hohen) Zahlen als negativ.

Die kleine Unschönheit, dass es mehr Zahlen unter Null als über Null gibt, die akzeptieren wir, weil uns das Zweierkomplement so viele Vorteile bei einer einfachen, klaren Darstellung bietet.

(Für die mathematisch geneigten Leser:innen: Die Stellenwertigkeit der linksten Stelle in unserem 3-Bit-Beispiel ist bei vorzeichenlosen Zahlen, wie wir sie zuerst kennengelernt haben, +4; also eine Eins an dieser Stelle erhöht den Wert der Gesamtzahl um 4. Bei vorzeichenbehafteten Zahlen, also wenn wir auch negative Zahlen darstellen wollen, ist der Stellenwert −4; eine Eins an dieser Stelle verringert den Wert um 4. Einfach genial, nicht?)

Bits für die ZahlMöglichkeitenZahlenbereich ohne VorzeichenZahlenbereich mit VorzeichenStellenwertigkeit der höchsten Ziffer
32³ = 80 … 7−4 … +3±4
42⁴ = 160 … 15−8 … +7±8
82⁸ = 2560 … 255−128 … +127±128
162¹⁶ = 65’5360 … 65’535−32’768 … +32’768±32’768
322³² = 4’294’967’2960 … 4’294’967’295−2’147’483’648 … +2’147’483’647±2’147’483’648
642⁶⁴ ≈ 16 Trillionen0 … 16 Trillionen (ca.)−8 Trillionen … +8 Trillionen (ca.)±8 Trillionen (ca.)
Zahlenbereiche unserer Drei-Bit-Beispiele und von im Computer üblichen Zahlengrössen im Vergleich. Eine 32-Bit-Zahl kann also rund 4 Milliarden verschiedene Werte annehmen.

Bedeutung

Wir alle haben wohl schon diese Formulare ausgefüllt, in dem für jeden Buchstaben oder jede Ziffer ein eigenes Kästchen vordefiniert war. Einige werden sicher das Problem gehabt haben, dass die Kästchen für die Zahl oder den Text nicht reichen (oder sich das mindestens vorgestellt haben).

Nach diesen Kästchen-Formularen sind auch unsere Computer modelliert, im wahrsten Sinne des Wortes. Und sie haben auch dieselben Limiten geerbt: In vielen Datenbanken und Webformularen haben Textfelder eine maximale Länge, ebenso — siehe oben — Zahlen meistens eine vordefinierte Unter- und Obergrenze.

Wenn sich ein Formular weltweit durchgesetzt hat und überall verwendet wird, ist es nicht mehr einfach, dieses Formular zu ändern. Dies gilt auch für Datenformate und Protokolle rund um Computer und Internet. Selbstverständlich ist dieses Formular hier fiktiv. [neu 2024-01-30]

Und wenn sich viele Computer (oder viele Teile eines grösseren Programms) mal auf so ein Formular (in der Informatik dann ein Datenformat, API oder Protokoll) geeinigt haben, dann ist es später sehr schwierig, diese Limiten zu erweitern.

Bei Zahlen kommt erschwerend noch die zusätzliche Überraschung hinzu, dass beim Hochzählen von sehr grossen Zahlen die Werte dann plötzlich zu sehr grossen negativen Zahlen werden können.

Diese Limiten spielen, leider, eine Schlüsselrolle bei vielen IT-Sicherheitsproblemen, aber auch anderen Problemen.

Die Hauptbedeutung aus aktuellem Grund ist im Follow-Up-Artikel erläutert: Y2K38: Timed Obsolescence

dnip.ch mit Deiner Spende unterstützen

Wir wollen, dass unsere Inhalte frei verfügbar sind, weil wir es wichtig finden, dass möglichst viele Menschen in unserem Land die politischen Dimensionen der Digitalisierung erkennen und verstehen können.

Damit das möglich ist, sind wir auf deine Unterstützung angewiesen. Jeder Beitrag und sei er noch so klein, hilft uns, unsere Aufgabe wahrzunehmen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Weitere Beiträge