Theorie
 
 
 
 
 
Computertechnik

 
 
 
 

Zahlen beschreiben elektrische Signale

 
 

.. Rechnen mit dem Zweierkomplement

 
 

 
 
 
 
 
Nachdem im vorherigen Kapitel das Zweierkomplement eingeführt wurde, soll nun geklärt werden, wie das Zweierkomplement der Zahl 0 lautet und wie man erkennt, dass es zu -128 im Bytespeicher kein Komplement gibt.

Zur Bestimmung des Zweierkomplements muss zum Einerkomplement die Zahl 1 addiert werden. Nun treten bei einer Addition Überträge auf, die sich durch die gesamte Rechnung ziehen und damit auch das Vorzeichen betreffen. Dabei ist zu beobachten, dass die letzten beiden Überträge das Ergebnis verfälschen können wenn sie ungleich sind. Sind sie dagegen gleich, so ist das Ergebnis richtig. In einer Wahrheitstabelle könnte man das wie folgt darstellen ..
                    Übertrag von Bit |
                         8<-7 | 7<-6 | Ergebnis ist
                         -----|------|---------------
                          0 | 0 | richtig
                          0 | 1 | falsch
                          1 | 0 | falsch
                          1 | 1 | richtig

 

Mit dieser Regel, die in der Folge bei der Addition von vorzeichenbehafteten Zahlen besser belegt werden kann, lassen sich die eingangs erwähnten Aufgaben lösen.

 
 
 




Zweierkomplement der Zahl 0

Bitnummer                         8 7654 3210
---------                         -----------
Ausgangszahl     +00 =              0000 0000
                                    ---------
Bildung des Einerkomplements        1111 1111
Bildung des Zweierkomplements   +           1
Überträge 6->7, 7->8            + 1 1111 111       => OV= 0   
                                   ----------
Zweierkomplement +00              1 0000 0000

Bei dieser Addition von 1, sind die letzten beiden Überträge gleich. Sie lauteten 1. Also ist das Byte-Ergebnis richtig. Daraus folgt, das Komplement der Zahl +0 ist +0

 
 
 




Zweierkomplement der Zahl 1

Bitnummer                         8 7654 3210
---------                         -----------
Ausgangszahl     +01 =              0000 0001
                                    ---------
Bildung des Einerkomplements        1111 1110
Bildung des Zweierkomplements      +        1
Überträge 6->7, 7->8            + 0 0000 000       => OV= 0
                                   ----------
Zweierkomplement -01 =              1111 1111

Auch bei dieser Addition sind die letzten beiden Überträge gleich. Sie lauteten 0. Also ist das Byte-Ergebnis richtig. Daraus folgt, das Komplement der Zahl +1= 0000 0001 ist -1 = 1111 1111. Erstaunlich ist die Anzahl der 1 Bits in der Dualzahl von -1. Aber auch hier steckt System drinnen. Aus der Digitaltechnik ist bekannt , dass beispielsweise ein 8Bit Zähler der von 0000 0001 zunächst 0000 0000 und dann noch einen weiteren Schritt zurückgezählt wird, als neuen Inhalt 1111 1111 besitzt. Das wäre nach obiger Logik die Zahl -1 .. und das macht insofern Sinn, als vor der Zahl 0, auf der Zahlengeraden die Zahl -1 liegt. Dem entsprechend würde der Zähler von 0 auf -1 dann auf -2 usw. zurückzählen, bis er die kleinste Zahl -128 erreicht hätte, die dann 1000 0000 lauten müsste. Nach dieser Zahl käme nun der Bruch, hin zu +127= 0111 1111.

 
 
 




Zweierkomplement der Zahl -128

Bitnummer                         8 7654 3210
---------                         -----------
Ausgangszahl    -128 =              1000 0000
                                    ---------
Bildung des Einerkomplements        0111 1111
Bildung des Zweierkomplements      +        1
Überträge 6->7, 7->8            + 0 1111 111       => OV= 1
                                   ----------
Zweierkomplement     =            0 1000 0000 ??

Bei diesem Beispiel tritt nun erstmals ein ungleicher Übertrag in den Bits 7 und 8 auf, womit das Ergebnis nach obiger Regel falsch sein muss.
Würde man die entstandene Zahl als rein positive Zahl interpretieren wird klar warum. Als solche würde das Ergebnis +128 lauten. +128 kann es aber in einem Bytespeicher mit vorzeichenbehafteten Zahlen nicht geben, denn hier ist +127 die grösste positive Zahl. Anders ausgedrückt, der Übertrag von 6. in das 7. Bit hat das Vorzeichen gedreht, ohne dass es durch einen weiterer Übertrag ein zweites Mal gedreht und damit wieder richtig gemacht worden wäre.

 

 

 


Vorzeichenbehaftete Zahlen, Beispiel: ein Byte
Listet man die vorzeichenbehafteten Zahlen einmal auf, wird ihre Struktur sichtbar. Von 0 aufwärts bis +127 erstrecken sich die positiven Zahlen. Von 0 abwärts bis -128 die negativen Zahlen. Das ist genau so wie auf der Zahlengerade.

                        +127        0111 1111
                                       ...
                         +03        0000 0011
                         +02        0000 0010
                         +01        0000 0001
                          00        0000 0000 
                         -01        1111 1111
                         -02        1111 1110
                         -03        1111 1101
                                       ...
                        -128        1000 0000

 

 

 


Die Bruchstelle zwischen positiven und negativen Zahlen, die sich wegen der Stellenbegrenzung auf 8, 16, .. usw. Bits ergibt und die auf der Zahlengerade keine Entsprechung findet, liegt in der Mitte der Gesamtzahlenmenge. Wobei die Null zu den positiven Zahlen gehört.

Anmerkung zu den Relationen:
Wie aus der Mathematik bekannt ist, kehren sich die Relationen über die gesamte Zahlengerade gesehen nie um. Am Beispiel der Relation 'kleiner als (<)' lässt sich dies erkennen. -128 ist kleiner als -127 und beide sind kleiner als 0. 0 wiederum ist kleiner als +127 usw..

Anmerkung Incrementieren / Decrementieren:
Das Erhöhen des Inhalts einer Speicherzelle um 1 nennt man Incrementieren, die Verminderung um 1, Decrementieren. Dem entsprechend wird das Zweierkomplement durch Bildung des Einerkomplemets mit nachfolgender Incrementierung gebildet.




www..de