Die Addition von Dualzahlen
Die Addition funktioniert wie bei der Addition von
Dezimalzahlen:
0111
+0100
====
1011
Es gelten die Regeln 0+0=0, 1+0=1, 0+1=1, 1+1=0 Übertrag 1. Im
Prinzip also nichts neues. Addiert man im Dezimalsystem 2 Zahlen so
kommt bei 5+5 auch 0 Übertrag 1 heraus. Der Übertrag wird bei
beiden System jeweils voran gestellt. Also gilt im Dualsystem
1+1=10.
Vorsicht Überlauf!
Die Addition ist im Prinzip problemlos. Es gibt
allerdings einen Haken an der Sache: Die Addition funktioniert nur
innerhalb eines bestimmten Wertebereiches. Woran liegt das? In der
Realität können wir beliebig grosse Zahlen darstellen. Das geht
leider nicht in der Informatik. Wir haben nur einen begrenzten Raum
bzw. Speicherplatz zur Verfügung. Wir müssen aus diesem Grund den
Speicherbereich einschränken (siehe
was ist ein Byte), in unserem
Beispiel nehmen wir als Speicherplatz ein Byte. Normalerweise
verwendet man zur Addition von ganzen Zahlen, einen deutlich
größeren Wertebereich, aber um einen überschaubaren Rahmen zu
haben, begrenzen wir uns absichtlich auf ein Byte. Unsere größte
darstellbare Zahl ist die 11111111, also dezimal 255. Was passiert
nun, wenn wir eine 00000001, also 1, addieren? Das verrückte ist:
es kommt 00000000, also 0 heraus.
Da bekanntlich 1+1=0 Übertrag 1 gibt, bekommt man als Ergebnis in
Wirklichkeit nicht 00000000 sondern 00000000 Übertrag 1. Dieser
letzte Übertrag kann jedoch nicht mehr gespeichert werden und wird
deshalb einfach ersatzlos gestrichen.
Es ergibt sich daraus jedoch auch eine gewisse Logik. Durch meinen
beschränkten Wertebereich komme ich irgendwann an meine obere
Grenze. Bei der Addition von 1 fängt dann jedoch der Wertebereich
wieder von vorne an, ich bin jetzt an der unteren Grenze, man
durchläuft dann wieder den Bereich bis zur oberen Grenze, usw. Wenn
wir also immer und immer wieder 1 addieren zählen wir unendlich oft
von 0 bis 255, dann wieder 0 bis 255 usw.