spshaus GmbH  · Trainingspartner der Siemens Schweiz AG, Sitrain Training Center Industry ·  www.spshaus.ch
Kurs: TIA-SERV1 Kapitel: Zähler, Zeiten, Arithmetik

INT-Zahlenkreis – Aufbau der INT-Zahl, Einer- und Zweierkomplement

Erstellt von spshaus GmbH · Trainingspartner der Siemens Schweiz AG, Sitrain Training Center Industry

Der Zahlenkreis

Eine INT-Zahl besteht aus 16 Bit und kann damit 216 = 65536 verschiedene Bitmuster annehmen. Diese Bitmuster lassen sich wie die Zahlen auf einer Uhr im Kreis anordnen: Oben steht die 0. Im Uhrzeigersinn folgen die positiven Zahlen, unten schliessen die negativen Zahlen an und laufen von links wieder zur 0 hinauf.

Zum Einstieg zeigt das 4-Bit-Modell alle 16 Positionen: 0, 1, 2 … 7, dann −8, −7 … −1 und wieder 0. Mit den Schaltflächen oben kannst du auf 8 Bit (SINT) und 16 Bit (INT) umschalten – das Prinzip bleibt identisch.
positiv (Vorzeichenbit 0) negativ (Vorzeichenbit 1) Überlauf-Naht
0
Dezimal (mit Vorzeichen)
0
Bitmuster ohne Vorzeichen
16#0
Hex
4 Bit
Datentyp
−8Wert einstellen+7

So wird die Zahl gespeichert

Unter dem Kreis siehst du das Bitmuster. Du kannst einzelne Bits anklicken – der Zeiger wandert sofort an die passende Position.

Das höchste Bit = Vorzeichenbit

  • Bit 15 = 0 → Zahl ist 0 oder positiv
  • Bit 15 = 1 → Zahl ist negativ
  • Es ist aber kein «Minus-Schalter»: das Bit hat das Gewicht −32768

Wertigkeit der Bits

  • Bit 0 … 14: Gewichte 1, 2, 4 … 16384
  • Bit 15: Gewicht −32768
  • Wert = Summe der Gewichte aller gesetzten Bits
Merke: Ein Schritt im Uhrzeigersinn ist immer +1 (Bitmuster um 1 erhöhen), ein Schritt dagegen −1. Nach dem grössten positiven Wert folgt direkt der kleinste negative – der Zeiger läuft über die rote Naht.

Einerkomplement und Zweierkomplement

Wie macht die SPS aus +5 die Zahl −5? Dafür gibt es zwei Verfahren, die beide auf dem Invertieren der Bits beruhen.

Einerkomplement

  • Alle Bits invertieren (NOT)
  • Ergebnis: −x − 1
  • Es gibt zwei Nullen (+0 und −0)
  • Wird für INT nicht als Zahlendarstellung verwendet

Zweierkomplement

  • Einerkomplement + 1
  • Ergebnis: −x
  • Es gibt nur eine Null
  • Darstellung der negativen Zahlen bei SINT, INT und DINT

Schritt für Schritt: Vorzeichen wechseln

x ~x (Einerkomplement) −x (Zweierkomplement)
1Positive Zahl x wählen: 37
Im Zahlenkreis: Das Vorzeichenwechseln ist eine Spiegelung. Das Einerkomplement spiegelt an der Achse durch die beiden Nähte (oben zwischen −1 und 0, unten zwischen MAX und MIN). Das anschliessende +1 schiebt den Zeiger einen Schritt weiter – das entspricht der Spiegelung an der Achse durch 0 und MIN.

Alle 16 Bitmuster im Vergleich (4 Bit)

BitmusterOhne VorzeichenEinerkomplement-DarstellungZweierkomplement (S7)
Beim Einerkomplement gibt es zwei Nullen (0000 und 1111) und damit nur 15 verschiedene Zahlen. Das Zweierkomplement nutzt alle 16 Muster – deshalb gibt es genau einen negativen Wert mehr als positive.

Warum Zweierkomplement? Subtrahieren durch Addieren

Das Rechenwerk muss nur addieren können. Eine Subtraktion ist die Addition des Zweierkomplements. Beispiel im 4-Bit-Modell: 5 − 3 = 5 + (−3)

+50101
−3 (Zweierkomplement von 3)1101
Summe1 0010
Übertrag fällt weg → Ergebnis0010 = +2
Im Kreis: Von der 5 aus gehst du 13 Schritte im Uhrzeigersinn (−3 entspricht Position 13). Du läufst über die Naht und landest bei +2 – genau so, als wärst du 3 Schritte zurückgegangen.

Grenzen des Datentyps INT

EigenschaftINT
Grösse16 Bit = 1 Wort = 2 Byte
Anzahl Bitmuster216 = 65536
Wertebereich−32768 … +32767
Bitmuster (hex)16#8000 … 16#7FFF
VorzeichenbitBit 15 (Gewicht −32768)
Negative Zahlen−1 … −32768 → 32768 Werte
Null und positive Zahlen0 … +32767 → 32768 Werte
Warum gibt es −32768, aber kein +32768? Die Null braucht ebenfalls ein Bitmuster (alle Bits 0) und liegt auf der Seite mit Vorzeichenbit 0. Damit bleiben für die positive Seite nur 32767 Zahlen, die negative Seite hat 32768.

Wichtige Werte

DezimalBinär (16 Bit)HexBemerkung
00000 0000 0000 000016#0000Alle Bits 0
+10000 0000 0000 000116#0001
+327670111 1111 1111 111116#7FFFGrösster Wert
−327681000 0000 0000 000016#8000Kleinster Wert
−21111 1111 1111 111016#FFFE
−11111 1111 1111 111116#FFFFAlle Bits 1

Überlauf

Im Zahlenkreis steht +32767 direkt neben −32768. Wird zu +32767 eine 1 addiert, läuft der Zeiger über die rote Naht und landet bei −32768. Umgekehrt führt −32768 − 1 auf +32767.

Ein Ergebnis ausserhalb des Wertebereichs ist ein Überlauf und darf nicht weiterverwendet werden. Bei Zählern deshalb die Grenze vor dem Hochzählen prüfen. Bei Bedarf einen grösseren Datentyp (DINT) verwenden.
Sonderfall −32768: Die Spiegelachse des Zweierkomplements geht durch 0 und −32768. Diese beiden Werte werden auf sich selbst gespiegelt: −(−32768) ergibt im 16-Bit-Raum nicht +32768, sondern wieder −32768 – diese Zahl hat keinen positiven Partner.

Vergleich ganzzahliger Datentypen mit Vorzeichen

DatentypBitWertebereich
SInt8−128 … +127
Int16−32’768 … +32’767
DInt32−2’147’483’648 … +2’147’483’647

Quiz