Skip to content

Rechner für Zweierkomplement und Vorzeichenzahlen

Ganzzahl mit Vorzeichen eingeben und Betrag-Vorzeichen, Einerkomplement, Zweierkomplement und Offset-Binär auf einmal erhalten, von 4 bis 64 Bit. Oder ein Bitmuster bzw. Hex-Byte einfügen und alle fünf Lesarten sehen.

Kein Tracking Läuft im Browser Kostenlos
Alles wird lokal in Ihrem Browser berechnet — nichts von dem, was Sie eingeben, wird hochgeladen.
Bitbreite

Von Dezimal zur Maschinendarstellung

Geben Sie eine ganze Zahl mit Vorzeichen ein. Alle vier Darstellungen werden auf einmal berechnet — Sie müssen nicht vorher wissen, welche Ihr System verwendet.

Zum Ausprobieren
Kodierung Bits Hex
Betrag-Vorzeichen 1000 0101 85
Einerkomplement 1111 1010 FA
Zweierkomplement 1111 1011 FB
Offset-Binär 0111 1011 7B

Vom Bitmuster zum Wert

Sie haben ein Byte in einem Speicherauszug oder einem Register gefunden und wissen nicht, wie es gelesen werden soll. Fügen Sie es ein und sehen Sie auf einen Blick, was es unter jeder Deutung bedeutet — welche richtig ist, hängt vom erzeugenden System ab, deshalb werden alle angezeigt.

Gelesen als Wert
Vorzeichenlos 251
Betrag-Vorzeichen -123
Einerkomplement -4
Zweierkomplement -5
Offset-Binär 123
8-Bit-Referenztabelle

Von derselben Engine berechnet, die das Werkzeug oben verwendet, diese Werte können also nicht davon abweichen.

Dezimal Betrag-Vorzeichen Einerkomplement Zweierkomplement Offset-Binär Hex
127 0111 1111 0111 1111 0111 1111 1111 1111 7F
100 0110 0100 0110 0100 0110 0100 1110 0100 64
10 0000 1010 0000 1010 0000 1010 1000 1010 0A
5 0000 0101 0000 0101 0000 0101 1000 0101 05
1 0000 0001 0000 0001 0000 0001 1000 0001 01
0 0000 0000 0000 0000 0000 0000 1000 0000 00
-1 1000 0001 1111 1110 1111 1111 0111 1111 FF
-5 1000 0101 1111 1010 1111 1011 0111 1011 FB
-10 1000 1010 1111 0101 1111 0110 0111 0110 F6
-100 1110 0100 1001 1011 1001 1100 0001 1100 9C
-127 1111 1111 1000 0000 1000 0001 0000 0001 81
-128 1000 0000 0000 0000 80
Wertebereiche nach Bitbreite
Breite Zweierkomplement / Offset-Binär Betrag-Vorzeichen / Einerkomplement
4 -8 … 7 -7 … 7
8 -128 … 127 -127 … 127
16 -32768 … 32767 -32767 … 32767
32 -2147483648 … 2147483647 -2147483647 … 2147483647
64 -9223372036854775808 … 9223372036854775807 -9223372036854775807 … 9223372036854775807
Jede Kodierung wird in der Testsuite über alle fünf Breiten hinweg abgesichert, einschließlich des vollständigen 4-Bit-Bereichs, beider Nullmuster und des kleinsten negativen Werts jeder Breite. Die 64-Bit-Ergebnisse werden gegen JavaScripts eigene BigInt.asIntN und BigInt.asUintN gegengeprüft. — Go-Tools Engineering-Team · Sep 9, 2026

Vom Engineering-Team von Go Tools gebaut und geprüft.

Schnelle Antworten

Was ist −5 im 8-Bit-Zweierkomplement?

11111011 11111011, also 0xFB.

Welchen Bereich hat ein vorzeichenbehaftetes Byte?

-128 … 127 −128 bis 127 im Zweierkomplement; −127 bis 127 in Betrag-Vorzeichen und Einerkomplement.

Wie mache ich aus einem Zweierkomplement-Muster wieder eine Zahl?

Wert − 2^n Ist das oberste Bit 0, lesen Sie es vorzeichenlos; ist es 1, ziehen Sie 2^n von der vorzeichenlosen Lesart ab.

Bedeutet 0xFF nun −1 oder 255?

−1 oder 255 −1 als vorzeichenbehaftetes Byte, 255 als vorzeichenloses. Die Bits allein entscheiden das nicht.

Was ist das Zweierkomplement?

Das Zweierkomplement beantwortet eine Hardware-Frage, keine mathematische: Wie speichert man negative Zahlen so, dass der bereits gebaute Addierer weiterhin funktioniert? Der Kniff besteht darin, −x durch das Muster von 2^n − x darzustellen. Die Addition läuft dann modulo 2^n um und trifft ohne jeden Sonderfall für Vorzeichen die richtige Antwort, weshalb die Subtraktion keine eigene Schaltung braucht.

Daraus folgen zwei Dinge, und beide tauchen in echten Fehlern auf. Erstens ist der Wertebereich unsymmetrisch: Acht Bit decken −128 bis 127 ab, nicht −128 bis 128, denn die Muster müssen aufgeteilt werden und es gibt keine negative Null, die das ausgleichen würde. Zweitens ist das Vorzeichen kein Flag, das man abstreifen kann — das oberste Bit von 11111011 ist 1, der Wert aber −5 und nicht −123, eine negative Zahl zu lesen heißt also, das ganze Wort zu deuten und nicht nur ein Bit anzusehen.

Betrag-Vorzeichen und Einerkomplement sind die beiden unterlegenen Entwürfe. Sie zu kennen lohnt sich trotzdem, weil IEEE-754-Gleitkomma das Betrag-Vorzeichen-Layout übernommen hat und weil erst der Vergleich das Zweierkomplement zwangsläufig statt willkürlich erscheinen lässt.

// -5 as an 8-bit byte, three ways to arrive at the same pattern
0b00000101        // 5
~0b00000101       // 11111010  ones' complement of 5
~0b00000101 + 1   // 11111011  two's complement = -5

// In JavaScript the width matters: bitwise operators are 32-bit,
// so anything wider has to go through BigInt.
BigInt.asIntN(8, 0xFBn)                 // -5n
BigInt.asUintN(8, -5n)                  // 251n
BigInt.asIntN(64, 0xFFFFFFFFFFFFFFFBn)  // -5n

// C23 made two's complement mandatory for signed integers.
// Before that, the other two encodings were legal but unused.

Was dieser Rechner leistet

Vier Kodierungen auf einmal

Betrag-Vorzeichen, Einerkomplement, Zweierkomplement und Offset-Binär werden gemeinsam berechnet. Offset-Binär ist das, was die meisten Rechner weglassen — und genau das, was ADC-Datenblätter weiterhin verwenden.

Rückwärtssuche aus einem Bitmuster

Fügen Sie die Bits oder das Hex ein, die Sie tatsächlich haben, und sehen Sie alle fünf Lesarten, die vorzeichenlose eingeschlossen. Diese Richtung brauchen Sie, wenn ein Speicherauszug der vom Gerät gemeldeten Zahl widerspricht.

Auch bei 64 Bit korrekt

Jeder Wert wird mit BigInt behandelt, deshalb ergibt 0xFFFFFFFFFFFFFF9C tatsächlich −100 und nicht das, was eine Kürzung auf 32 Bit übrig ließe.

Ehrlich, wenn es keine Darstellung gibt

Bei Breite 8 hat −128 weder eine Betrag-Vorzeichen- noch eine Einerkomplement-Form. Die Tabelle sagt das, statt ein Muster auszugeben, das diese Zahl gar nicht bedeutet.

Negative Null sichtbar gemacht

Geben Sie 0 ein, und das zweite Bitmuster der Null in Betrag-Vorzeichen und Einerkomplement wird angezeigt — das ist das deutlichste einzelne Argument dafür, warum sich das Zweierkomplement durchgesetzt hat.

Referenztabellen ohne JavaScript

Die 8-Bit-Vergleichstabelle und die Wertebereiche je Breite werden beim Bau der Seite von derselben Engine gerendert, die auch die interaktiven Felder speist, und können deshalb nicht von ihr abweichen.

Vergleich mit anderen Prüfmöglichkeiten

Die Umwandlung Ihrer Programmiersprache

Laufzeit-API

BigInt.asIntN, Pythons int.from_bytes(..., signed=True) und die Typen fester Breite in C liefern die verbindliche Antwort für den Code, den Sie schreiben. Benutzen Sie sie im Code; benutzen Sie diese Seite, wenn Sie einen Wert vor sich haben und keinen Interpreter offen.

Die Speicheransicht eines Debuggers

IDE-Funktion

Sie zeigt den Wert mit dem Typ, den das Programm deklariert hat — genau die Information, die einem Bitmuster fehlt. Sie hilft nicht, wenn die Bytes ohne deklarierten Typ über eine Leitung eingetroffen sind, und für diesen Fall ist diese Seite da.

Zahlensystem-Konverter

Diese Website

Er rechnet zwischen Zahlensystemen um, aber nur für nichtnegative Werte — negative werden dort ausdrücklich abgelehnt, weil ein Zahlensystem keine Meinung dazu hat, wie ein Vorzeichen gespeichert wird. Die vorzeichenbehaftete Darstellung ist Aufgabe dieser Seite; für Beträge nehmen Sie den Zahlensystem-Konverter.

IEEE-754-Konverter

Diese Website

Das Gegenstück für Gleitkomma. Er behält ein Betrag-Vorzeichen-Layout statt eines Zweierkomplements und spannt den Exponenten mit 2^(e−1)−1 vor, sodass die beiden Seiten verschiedene Fragen zum selben Speicherwort beantworten.

Durchgerechnete Beispiele

−5 in einem 8-Bit-Byte

-5, Breite 8
Betrag-Vorzeichen 1000 0101
Einerkomplement   1111 1010
Zweierkomplement  1111 1011  (0xFB)
Offset-Binär      0111 1011

Die drei Kodierungen stimmen im Vorzeichenbit überein und weichen sonst überall voneinander ab. Nur die Zeile des Zweierkomplements ist das, was ein int8_t in C tatsächlich enthält.

Das Byte 0xFB, fünffach gelesen

0xFB, Breite 8
vorzeichenlos     251
Betrag-Vorzeichen -123
Einerkomplement   -4
Zweierkomplement  -5
Offset-Binär      123

−128 hat keine Betrag-Vorzeichen-Form

-128, Breite 8
Betrag-Vorzeichen keine Darstellung
Einerkomplement   keine Darstellung
Zweierkomplement  1000 0000  (0x80)
Offset-Binär      0000 0000

Betrag-Vorzeichen und Einerkomplement geben je ein Bitmuster für die negative Null aus, reichen deshalb nur von −127 bis 127 und erreichen −128 nicht. Werkzeuge, die hier ein Byte ausgeben, irren sich.

Ein 64-Bit-Registerwert

0xFFFFFFFFFFFFFF9C, Breite 64
Zweierkomplement -100
vorzeichenlos    18446744073709551516

Alles jenseits von 32 Bit muss über BigInt laufen. Die JavaScript-Operatoren |, << und >>> kürzen stillschweigend auf 32 Bit, weshalb manche Online-Rechner hier eine falsche Antwort statt einer Fehlermeldung liefern.

So benutzen Sie den Komplement-Rechner

  1. 1

    Bitbreite wählen

    4, 8, 16, 32 oder 64. Das ist keine Anzeigeeinstellung: Dieselben Bits bedeuten bei unterschiedlicher Breite unterschiedliche Zahlen, eine falsche Wahl ändert also die Antwort.

  2. 2

    Vorzeichenbehaftete Dezimalzahl eingeben

    Geben Sie eine ganze Zahl ein, Minuszeichen eingeschlossen. Alle vier Kodierungen aktualisieren sich beim Tippen, jeweils zusammen mit ihrer Hexadezimalform.

  3. 3

    Oder rückwärts von den Bits ausgehen

    Fügen Sie eine Binärkette oder einen 0x-Wert in das Rückwärtsfeld ein, um zu sehen, was genau dieses Muster unter jeder Deutung bedeutet, die vorzeichenlose Lesart eingeschlossen.

  4. 4

    Hinweise lesen, wenn sie erscheinen

    Die Seite markiert die beiden Fälle, über die alle stolpern: Der kleinste negative Wert hat weder eine Betrag-Vorzeichen- noch eine Einerkomplement-Form, und die Null hat in diesen beiden Kodierungen ein zweites Bitmuster.

Fehler, die zu falschen Antworten führen

Das +1 vergessen

Das Invertieren der Bits liefert das Einerkomplement. Dort stehenzubleiben liegt um eins neben dem Zweierkomplement, und der Fehler fällt leicht durch, weil das Ergebnis immer noch wie eine plausible negative Zahl aussieht.

✗ Falsch
5   = 00000101
~5  = 11111010   <- ones' complement, not -5
✓ Richtig
5        = 00000101
~5       = 11111010
~5 + 1   = 11111011   <- -5 in two's complement

32-Bit-Bitoperatoren auf einen 64-Bit-Wert anwenden

JavaScript kürzt die Operanden von Bitoperatoren auf 32 Bit. Die obere Hälfte verschwindet ohne Fehlermeldung, das Ergebnis ist also falsch statt abwesend.

✗ Falsch
0xFFFFFFFFFFFFFFFB        // 18446744073709552000  -- the literal is already rounded
~0xFFFFFFFFFFFFFFFB + 1   // 0  -- silently wrong, expected -5
✓ Richtig
BigInt.asIntN(64, 0xFFFFFFFFFFFFFFFBn)   // -5n

Einen negativen Wert mit Nullen erweitern

Das Auffüllen mit Nullen erhält die Zahl nur, solange sie positiv ist. Bei einem negativen Wert muss das Vorzeichenbit über alle neuen Bits wiederholt werden.

✗ Falsch
int8  0xFB  (-5)
int16 0x00FB  (251)   <- zero-extended
✓ Richtig
int8  0xFB  (-5)
int16 0xFFFB  (-5)    <- sign-extended

Dem kleinsten negativen Wert eine Betrag-Vorzeichen-Form geben

−128 hat in acht Bit weder eine Betrag-Vorzeichen- noch eine Einerkomplement-Darstellung, weil beide Kodierungen je ein Muster für die negative Null ausgeben. Dafür 10000000 auszugeben verwechselt die Antwort des Zweierkomplements mit einer Kodierung, die diese Zahl gar nicht ausdrücken kann.

✗ Falsch
-128 sign-magnitude: 10000000   <- that pattern means -0
✓ Richtig
-128 sign-magnitude: no representation at width 8
-128 two's complement: 10000000

Wann man das wirklich braucht

Ein Sensorregister auslesen
Ein Temperaturregister liefert 0xFF9C. Vorzeichenlos sind das 65436, was keine Temperatur ist. Bei Breite 16 zeigt die Zweierkomplement-Zeile −100, und mit einem Skalenfaktor von 0,1 °C meldet der Sensor −10,0 °C.
Ein Protokoll ohne typisierte Felder debuggen
Modbus, CAN und die meisten binären Telemetrieformate transportieren rohe Wörter ohne Angabe zum Vorzeichen. Wenn Client und Gerät sich über einen Wert uneins sind, zeigt ein Blick auf beide Lesarten desselben Wortes meist, welche Seite falsch angenommen hat.
Übungen zur Rechnerarchitektur
Betrag-Vorzeichen, Einerkomplement, Zweierkomplement und Offset-Binär sind das Standardquartett einer Einführungsvorlesung. Nebeneinander bei gleicher Breite werden die Unterschiede sichtbar, statt auswendig gelernt zu werden.
Einem Integer-Überlauf nachgehen
Wenn ein Zähler von 2147483647 auf −2147483648 springt, zeigt der Blick auf beide als 32-Bit-Muster, dass der Übertrag im Vorzeichenbit gelandet ist. Der Wert ist nicht sinnlos geworden, er ist genau so umgelaufen, wie es die Kodierung vorsieht.
Serialisierungscode schreiben
Bevor Sie einem handgeschriebenen Encoder trauen, prüfen Sie je Breite einen negativen Wert gegen diese Seite. Ein Vorzeichenfehler ist schnell geschrieben und erzeugt eine Ausgabe, die strukturell einwandfrei aussieht — bis die erste echte negative Zahl eintrifft.

Wie die vier Kodierungen aufgebaut sind

Betrag-Vorzeichen
Das oberste Bit trägt das Vorzeichen, die restlichen n−1 Bit tragen den Betrag, gelesen als schlichte vorzeichenlose Zahl. Der Bereich reicht von −(2^(n−1)−1) bis 2^(n−1)−1, ist symmetrisch und hat zwei Nullen. Es ist das Layout, das IEEE 754 für Gleitkomma verwendet.
Einerkomplement
Ein negativer Wert ist die bitweise Inversion seines Betrags, gleichbedeutend mit 2^n − 1 − x. Gleicher Bereich und dieselben zwei Nullen wie beim Betrag-Vorzeichen. Die Addition braucht einen Ringübertrag, und genau diese Komplikation räumt das Zweierkomplement aus dem Weg. Die Stellung des Apostrophs im Englischen ist kein Tippfehler: ones' complement bezieht sich auf ein Wort aus lauter Einsen, two's complement dagegen auf eine einzelne Zweierpotenz.
Zweierkomplement
Ein negativer Wert −x wird als 2^n − x abgelegt. Der Bereich reicht von −2^(n−1) bis 2^(n−1)−1, ist absichtlich unsymmetrisch und hat eine Null. Addition, Subtraktion und die Multiplikation des unteren Worts sind allesamt vorzeichenunabhängig, und das ist der ganze Grund für seinen Sieg.
Offset-Binär
Speichert Wert + 2^(n−1), sodass −2^(n−1) zu lauter Nullen wird und die Muster in derselben Reihenfolge sortieren wie die Werte, die sie kodieren. Es entspricht dem Zweierkomplement-Muster mit gekipptem obersten Bit. Vorsicht bei der Benennung: IEEE-754-Exponentenfelder sind mit 2^(e−1)−1 vorgespannt, also um eins weniger als der hier verwendete Offset.
Warum die Arithmetik BigInt verwendet
JavaScript wandelt die Operanden von &, |, ~ und den Schiebeoperatoren vor der Operation in 32-Bit-Ganzzahlen um und danach zurück, wodurch ein 64-Bit-Wert seine obere Hälfte verliert, ohne dass ein Fehler ausgelöst wird. Jede Umrechnung auf dieser Seite erfolgt stattdessen auf Ganzzahlen beliebiger Genauigkeit, weshalb auch die 64-Bit-Extremwerte exakt herauskommen.

Vorzeichenbehaftete Werte richtig behandeln

Zuerst die Breite festlegen
Ein Bitmuster hat keinen Wert, solange Sie nicht sagen, wie breit das Feld ist. Die meisten Widersprüche zwischen Datenblatt und Debugger laufen darauf hinaus, dass eine Seite 16 Bit annimmt und die andere 32.
Den kleinsten negativen Wert als Sonderfall behandeln
Seine Negation läuft in jeder Breite über — im Zweierkomplement ist −(−128) für ein vorzeichenbehaftetes Byte immer noch −128. Jeder Code, der einen Betrag bildet, braucht einen Plan für diese Eingabe, und jede Testsuite sollte sie enthalten.
Vorzeichenbehaftung nie aus den Daten ableiten
Keine noch so genaue Betrachtung der Bits sagt Ihnen, ob ein Feld vorzeichenbehaftet ist. Holen Sie sich das aus dem Datenblatt, dem Schema oder der Strukturdefinition; Raten funktioniert, bis der erste negative Wert in Produktion auftaucht.
Beim Verbreitern das Vorzeichen erweitern
Ein 8-Bit-0xFB als 0x00FB in ein 16-Bit-Feld zu kopieren macht aus −5 die Zahl 251. Einen vorzeichenbehafteten Wert zu verbreitern heißt, das Vorzeichenbit zu wiederholen, was 0xFFFB ergibt.
Der spracheigenen Umwandlung den Vorzug geben
BigInt.asIntN in JavaScript, int.from_bytes(..., signed=True) in Python und Typen fester Breite in C sagen, was sie meinen, und behandeln die Randfälle. Handgeschriebenes ~x + 1 ist die Quelle der Breitenfehler.

Häufige Fragen

Was ist das Zweierkomplement in einem Satz?
Es ist die Konvention, eine negative Zahl −x als Bitmuster von 2^n − x abzulegen, wodurch Addition und Subtraktion dieselbe Schaltung benutzen und der Zahlenstrahl genau eine Null bekommt.
Wie berechne ich ein Zweierkomplement von Hand?
Betrag binär hinschreiben, jedes Bit kippen, dann 1 addieren. Für 5 in acht Bit: 000001011111101011111011. Allein das Kippen liefert das Einerkomplement, weshalb die beiden immer genau um eins auseinanderliegen.
Warum passt −128 in ein vorzeichenbehaftetes Byte, +128 aber nicht?
Das Zweierkomplement ist absichtlich unsymmetrisch. Mit n Bit deckt es −2^(n−1) bis 2^(n−1)−1 ab, weil es kein Muster für die negative Null verschwendet, wie es Betrag-Vorzeichen und Einerkomplement tun. Der dadurch frei werdende Platz landet auf der negativen Seite.
Ist 11111011 nun −5 oder 251?
Beides, und die Bits allein verraten es nicht. Die Antwort hängt vom Typ ab, den das erzeugende System deklariert hat. Deshalb zeigt die Rückwärtssuche auf dieser Seite alle Lesarten gleichzeitig, statt eine für Sie auszuwählen — nehmen Sie die Zeile, die zu Ihrem int8_t oder uint8_t passt.
Was ist Offset-Binär und wo begegnet es mir?
Offset-Binär (auch Exzess-K oder Exzesscode genannt) speichert Wert + 2^(n−1), sodass der kleinste Wert nur aus Nullen besteht und eine Sortierung der rohen Muster als vorzeichenlose Ganzzahlen zugleich die vorzeichenbehafteten Werte sortiert. Es taucht in ADC- und DAC-Ausgaben und in Audio-Sampleformaten auf. Beachten Sie: IEEE-754-Exponenten verwenden einen anderen Bias — 2^(e−1)−1, nicht 2^(e−1) — übertragen Sie die Zahl also nicht von einem Fall auf den anderen.
Warum zeigt ein Modbus-Register 65436, wenn der Sensor −100 meldet?
Modbus überträgt 16-Bit-Wörter ohne jede Typinformation, also gibt ein Client, der vorzeichenlos annimmt, 65436 aus, während das Gerät den Zweierkomplement-Wert −100 gemeint hat. Fügen Sie 65436 hier als Hexwert 0xFF9C mit Breite 16 ein, und die Zeile des Zweierkomplements zeigt die gemeinte Lesart.
Werden Betrag-Vorzeichen und Einerkomplement noch verwendet?
Für Ganzzahlen kaum noch — praktisch jede aktuelle CPU rechnet im Zweierkomplement, und C23 hat es endgültig verbindlich gemacht. Wichtig bleiben sie, weil IEEE-754-Gleitkomma das Betrag-Vorzeichen-Layout beibehält und weil beide in Prüfungsaufgaben zur Rechnerarchitektur weiterhin vorkommen.
Warum liefern manche Rechner bei 64-Bit-Werten ein falsches Ergebnis?
Die Bitoperatoren von JavaScript wandeln ihre Operanden zuerst in 32-Bit-Ganzzahlen um, also verliert eine Seite, die ~x + 1 verwendet, die obere Hälfte eines 64-Bit-Werts stillschweigend und meldet ein plausibles, aber falsches Ergebnis. Dieses Werkzeug arbeitet durchgehend mit BigInt, weshalb die 64-Bit-Zeilen hier mit dem übereinstimmen, was Ihr Debugger anzeigt.
Was ist die negative Null und warum ist sie ein Problem?
Im Betrag-Vorzeichen bedeuten 00000000 und 10000000 beide Null; im Einerkomplement sind es 00000000 und 11111111. Zwei Vergleiche, die gleich sein müssten, können also bitweise ungleich ausfallen. Das Zweierkomplement hat nur eine Null, was eine ganze Klasse von Sonderfällen in der Hardware beseitigt hat.
Wird etwas von dem, was ich eingebe, an einen Server geschickt?
Nein. Die Seite liefert die Umrechnungs-Engine an Ihren Browser aus und führt sie dort aus. Registerauszüge und Firmware-Werte stammen oft aus Systemen, die Sie nicht weitergeben dürfen; hier müssen Sie deshalb niemandem glauben — der Netzwerk-Tab genügt, denn es geht keine Anfrage hinaus.

Verwandte Werkzeuge

Alle Werkzeuge anzeigen →