|
|
|
|
|
|
|
|
|
Zahlen beschreiben elektrische Signale |
||
|
.. negative Dualzahlen |
||
|
|
||
|
Computer
arbeiten aufgrund ihrer vorgegebenen Speicherstruktur
grundsätzlich mit stellenbegrenzten Zahlen. In einer 8Bit
Speicherzelle, einem Byte, findet maximal eine 8stellige
Dualzahl Platz. Darüber hinaus spielen hier führende
Nullen eine Rolle, denn die Bits einer Speicherzelle können
die Werte 0 oder 1 annehmen, nie jedoch keinen Wert. So besitzen
fast alle Zahlen im Computerspeicher führende Nullen, die
jedoch die Zahl nicht verändern. Diese grundlegende
Feststellung ist im Folgenden zu beachten.
Wegen der Begrenzung der Stellen muss sich das Vorzeichen von negativen Zahlen ebenfalls innerhalb der Speicherzelle befinden. Bei 8Bit Speichern geht somit ein Bit für das Vorzeichen verloren. Während bei ausschließlich positiv gedachten Zahlen alle Bits der Zahl zugeordnet werden können. Aus dieser Überlegung folgt, dass es für den Inhalt einer Speicherzelle grundsätzlich zwei Interpretationsmöglichkeiten in Bezug auf die enthaltene Zahl gibt, die der Programmierer bestimmt. Positive Zahlen: (Zahlen aus N) Hierbei geht der Programmierer davon aus, dass die Inhalte seiner Speicher grundsätzlich aus ganzzahligen, positiven Zahlen besteht. Ein Byte-Speicher kann somit die Zahlen 0 bis 255 enthalten. Solche Speicherzellen benennen kein Vorzeichen. Es ist grundsätzlich das positive Vorzeichen anzunehmen womit ausschließlich Ziffern der Zahl im Speicher aufgehoben werden. Vorzeichenbehaftete Zahlen: (Zahlen aus Z) Der Programmierer geht davon aus, dass seine Speicherzellen vorzeichenbehaftete Zahlen enthalten. So stellt beispielsweise das höchste Bit des Bytespeichers das Vorzeichen dar. Die 0 ist dabei das positive (+), die 1 das negative (-) Vorzeichen. Entsprechend kann der Byte Speicher nun nur die Zahlen -128 bis 0 bis +127 enthalten. Der CPU ist es hierbei egal was sich der Programmierer in Bezug auf seine Zahlen denkt. Sie entnimmt den Speicherzellen ihre Inhalte und bearbeitet diese beispielsweise bei einer Addition immer gleich. Sie setzt allerdings dabei eine Reihe von Flaggen (Flags). Aus diesen Flaggen muss sich der Programmierer diejenigen heraussuchen, die bei seiner Interpretation der Zahlen wichtig sind und auf die er, aufgrund seiner Interpretation, per Programm reagieren muss. |
||
|
|
Das Zweierkomplement: Der Begriff Komplement bedeutet 'das Entgegengesetzte'. Im dezimalen Zahlensystem ist das Komplement zur Zahl +5, die Zahl -5 und das Komplement der Zahl -5, die Zahl +5. Durch die Bildung des Komplements wird also aus einer positiven Zahl eine negative und umgekehrt. Das funktioniert auch im Zweierzahlensystem, nur dass hier das Vorzeichen eine 0 oder eine 1 sein muss und nicht eines der Zeichen + oder benutzt wird. Hieraus ergibt sich bei der Komplementbildung eine Schwierigkeit, deren genauer Grund hier nicht dargestellt werden soll. Wichtig ist, dass es bei Dualzahlen nicht genügt das einfache Komplement zu bilden, sondern .. zur Wandlung einer positiven Dualzahl in eine negative Dualzahl muss das Zweierkomplement benutzt werden. Umgekehrt gilt gleiches. |
|
|
|
Beispiel: Von der Dualzahl 0011 0111b = 55 soll das Zweierkomplement gebildet werden, so dass sie zur Zahl -55 wird. Das Verfahren der Zweierkomplentbildung funktioniert wie folgt .. |
|
Ausgangszahl +55 = 0011 0111
---------
Bildung des Einerkomplements 1100 1000
Bildung des Zweierkomplements + 1
----------
Zweierkomplement -55 1100 1001
|
||
|
|
Alle Bits der Ausgangszahl werden im ersten Schritt invertiert. Das Ergebnis wird Einerkomplement genannt. Dann wird zum Einerkomplement die Zahl 1 hinzuaddiert. Das Ergebnis, das Zweierkomplement, ist die Darstellung der Zahl -55 im dualen Zahlensystem. Das die dargestellte Zahl negativ ist, läßt sich an dem höchsten Bit, das 1 lautet, erkennen. |
|
|
|
Die Umkehrung dieses Weges müsste nun wieder +55 ergeben .. |
|
Ausgangszahl -55 = 1100 1001
---------
Bildung des Einerkomplements 0011 0110
Bildung des Zweierkomplements + 1
----------
Zweierkomplement +55 0011 0111
|
||
|
|
|
|
|
Wie
an diesem Beispiel zu sehen ist, funktioniert das Verfahren.
Durch zweifache Anwendung des Zweierkomplements entsteht wieder
die Zahl +55.
|
||
|
|
|
|
|
|
Auf dem beschriebenen Weg, über die Bildung des Zweierkomplements, werden alle negativen Ganzzahlen in einem Computer dargestellt, unabhängig davon ob sich die Stellenbegrenzung auf ein Byte, ein Word oder noch grössere Speicherzellen bezieht. |
|
|
|
|
|
|
|
Das Problem -128 Ein Problem, das bei der Bildung des Zweierkomplements, und bei der angesprochenen Stellenbegrenzung auftritt ist, dass es für die kleinste negative Zahl in der Begrenzung kein Komplement gibt. So ist es beispielsweise bei der Benutzung eines Bytes, also von 8Bit nicht möglich das Komplement für die Zahl -128 zu bilden, denn für diese gibt es keine Entsprechung in einem Byte. Die größte positive Zahl ist hier +127. Wie ein Programmierer diesen Umstand erkennt, davon ist bei der Besprechung der Flaggen (hier der Overflowflagge) die Rede. |
|
|
|
|
|
|
|
===================== |
|
|
|
Das
Zweierkomplement im Zehnerzahlensystem
Das
oben beschriebene Verfahren zur Bildung des Zweierkomplements
funktioniert auch im Zehnerzahlensystem. Allerdings muss man
sich auch hier auf eine Stellenbegrenzung einlassen, was im
'echten Leben' wohl niemand wirklich tun wird. Im Folgenden soll
davon ausgegangen werden, dass die zur Rede stehenden
Dezimalzahlen genau vier Stellen besitzen und die höchte
Stelle das Vorzeichen ist.
Als
positives Vorzeichen wird die 0 benutzt, als negatives
Vorzeichen, die Ziffer 9.
Zur Bildung des Einerkomplements wird jede Ziffer einer Stelle zu 9 ergänzt. Die Bildung des Zweierkomplements erfolgt durch die Addition von 1. |
|
|
|
|
|
|
|
Beispiel: Die Zahl +827 entspräche nach dieser Vereinbarung der Zahl 0827. Die Bildung des Zweierkomplements würde dann zu .. |
|
Ausgangszahl +827 = 0827
-----
Bildung des Einerkomplements 9172
Bildung des Zweierkomplements + 1
------
Zweierkomplement -827 = 9173
|
||
|
|
Alle
Stellen der Ausgangszahl werden im ersten Schritt auf 9 ergänzt.
Das Ergebnis wird Einerkomplement genannt. Dann wird zum
Einerkomplement die Zahl 1 hinzuaddiert. Das Ergebnis, das
Zweierkomplement 9173, ist die Darstellung der Zahl -827.
Zugegeben, eine gewöhnungsbedürftige
Ziffernkombination.
Die Umkehrung dieses Weges müsste nun wieder +827 ergeben. |
|
Ausgangszahl -827 = 9173
-----
Bildung des Einerkomplements 0826
Bildung des Zweierkomplements + 1
------
Zweierkomplement +827 = 0827
|
||
|
|
In der Tat ergibt das Komplement des Komplements wieder +827 |
|
|
|
|
|
.de