Dualsystem in Step7

Ein Computer benutzt als Zahlensystem das Dualsystem, in dem nur die Ziffern 0 und 1 vorkommen. Eine SPS ist im Grunde ebenfalls ein Computer. Nun steht man vor dem Problem, dass man Zahlen unterschiedlicher Längen in einer SPS darstellen muss. Hierbei hängt es von der Bitlänge ab, welchen Zahlenumfang man darstellen kann.

Beispiele:

  • Hat man nur 1 Bit zur Verfügung, kann man nur 2 Ziffern darstellen. 0 und 1.
  • Hat man 2 Bits zur Verfügung, kann man bereits 4 Ziffern darstellen. 00, 01, 10, 11. In Dezimal umgerechnet wären das die Zahlen 0, 1, 2 und 3.

Übersicht über Dualzahlen bei einer Bitlänge von 4 Bits. Der darstellbare Zahlenumfang wäre in diesem Fall 0000 - 1111. Das wären in Dezimal die Zahlen 0 - 15.

Dezimalzahl Dualzahl
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
91001
101010
111011
121100
131101
141110
15 1111

Mit 8 Bits, das zusammengefasst umgangssprachlich als 1 Byte oder 1 Buchstabe bezeichnet wird, kann man einen Zahlenumfang 00000000 - 11111111 darstellen. Dezimal wären das die Zahlen 0 - 255.

Dezimalzahl Dualzahl
0 bis 255 0000 0000 bis 1111 1111

Ein Wort besteht aus mindestens 2 Buchstaben. In der Digitaltechnik bedeutet das, dass ein Wort sich aus 2 Bytes zusammensetzt, was einer Bitlänge von 16 entspricht. Mit 2 Bytes kann man einen Zahlenumfang von 0000000000000000 - 1111111111111111 darstellen. Dezimal wären das die Zahlen 0 - 65535.

Dezimalzahl Dualzahl
0 bis 65535 0000 0000 0000 0000 bis
1111 1111 1111 1111

Darstellung negativer Zahlen: Einerkomplement, auch 1er-Komplement genannt

Bisher wurden nur die darstellbaren Zahlen größer oder gleich 0 betrachtet. Eine Möglichkeit, negative Zahlen darzustellen, ist das Einerkomplement. Hierbei wird das Bit mit dem höchsten Stellenwert als Vorzeichenbit reserviert. Hat man z.B. für eine Zahl einen Speicherbereich von 1 Byte (Bit 0 - Bit 7), dann fungiert Bit 7 als Vorzeichenbit. Das Bit wird auch Most-Significant-Bit (MSB) bezeichnet. Die übrigen Ziffern (rechts vom Vorzeichenbit) stellen den Zahlenwert dar. Ist das Vorzeichenbit eine 0, dann ist stellt die Ziffernfolge rechts vom Vorzeichenbit eine positive Zahl dar.

  • Beispiel für die positive Dezimalzahl 8: 00001000.

Möchte man negative Zahlen darstellen, kommt das Einerkomplement ins Spiel. Dabei wird das Vorzeichenbit auf 1 gesetzt, womit klar wird, dass es sich dabei um eine negative Zahl handelt. Die übrigen Ziffern rechts vom Vorzeichenbit, werden negiert. Das bedeutet, alle dualen Ziffern mit 0 werden zu 1, alle dualen Ziffern mit 1 werden zu 0.

  • Beispiel für die negative Dezimalzahl -8: 11110111.

Dadurch, dass ein Bit quasi "verloren" geht, verkürzt sich der darstellbare Zahlenraum. Dafür kann man sowohl positive als auch negative Zahlen darstellen. Bei einem Speicherbereich von 8 Bits würde das bedeuten, dass 7 Bits übrig bleiben und damit kann man einen Zahlenraum 10000000 - 011111111 darstellen, was Dezimal -127 bis +127 wäre.

Die Darstellung mit dem Einerkomplement hat einen Nachteil. Für die Zahl 0 gibt es 2 Darstellungsmöglichkeiten. Eine positive 0 (00000000) und eine negative 0 (11111111). Hier kann man das Einerkomplement auf das Zweierkomplement erweitern.

Zweierkomplement, auch 2er-Komplement genannt

Damit man das Problem mit den 2 möglichen Darstellungen für die 0 ausschließt, hat man ein Verfahren entwickelt, das Zweierkomplement genannt wird. Dabei geht man wie folgt vor.

  • Zuerst wird das Einerkomplement gebildet.
  • Zum Einerkomplement wird die duale Zahl 1 addiert.

Beispiel für die positive Zahl 8: 00001000

  • Für die negative Darstellung Einerkomplement bilden: 11110111
  • 11110111 + 1 addieren: 11111000

Die Darstellung der negativen Zahl -8 im Zweierkomplement wäre: 11111000.

Zweierkomplement bilden

Beispiel mit der Dezimalzahl 5

  • Positive Dezimalzahl in Dual: 0101
  • Einerkomplement bilden: 1010
  • Die Zahl 1 addieren: 1011
  • Zweierkomplement für die negative Dezimalzahl -5: 1011

Zusammenfassung zur Bildung des Zweierkomplements

  • Das Bit mit dem höchsten Stellenwert kennzeichnet das Vorzeichen.
  • Ist das Vorzeichenbit 0, ist es eine positive Zahl.
  • Ist das Vorzeichenbit 1, ist die Zahl negativ.
  • Die größtmögliche positive Zahl wird dargestellt, indem man das Vorzeichenbit auf 0 setzt und die übrigen Ziffern auf 1.
  • Die größtmögliche negative Zahl wird dargestellt, indem man das Vorzeichenbit auf 1 setzt und die übrigen Ziffern auf 0.

Zur Veranschaulichung zwei Tabellen mit positiven und negativen Zahlen im Dualsystem bei einem Speicherbereich von 4 Bits.

positive Dezimalzahl positive
Dualzahl
negative Dezimalzahl negative
Dualzahl
0 0000 -1 1111
1 0001 -2 1110
2 0010 -3 1101
30011 -4 1100
4 0100 -5 1011
5 0101 -6 1010
6 0110 -7 1001
7 0111 -8 1000