# Zweierkomplement



## Dnh (29. Jun 2018)

Hallo,

ich möchte folgende Rechnung binär durchführen:
-99-116 (Dezimal)

Am einfachsten wäre es ja beide Zaheln als positiv zu betrachtet, da das Vorzeichen ja nachher klar ist.
Ich habe es allerdings trotzdem versucht, beide zahlen erst binär auszudrücken, dann jeweils das Zweierkomplement gebildet und diese dann addiert. Heraus kam was falsches. Warum?


----------



## httpdigest (29. Jun 2018)

Wie du ja schon sagst, kannst du einfach die positiven Zahlen addieren.
Wenn du das machst, bilde also 99 und 116 binär, addiere beide Zahlen binär und erzeuge das Zweierkomplement von dem negierten Ergebnis, indem du alle Bits vom positiven Ergebnis invertierst und am Schluss noch 1 addierst.
Wenn du gleich die Zweierkomplemente von -99 und -116 addieren willst, kannst du das so machen, indem du also zuerst 99 und 116 binär bildest, dann die Zweierkomplementumwandlung von 99 zu -99 und 116 zu -116 machst, indem du alle Bits umkehrst und am Ende 1 addierst. Dann kannst du beide Zahlen addieren und solltest dasselbe Ergebnis erhalten wie als würdest du zuerst 99 und 116 addieren und das negierte Ergebnis dann als Zweierkomplement darstellen.


----------



## mihe7 (29. Jun 2018)

```
-99 = 2k(01100011) = 10011100 + 1 = 10011101
-116 = 2k(01110100) = 10001011 + 1 = 10001100

    10011101
+   10001100
=(1)00101001

Die führende 1 ist Übertrag und fällt weg, d. h.

00101001 = -215
neg(00101001 - 1) = neg(00101000) = 11010111 = 215
```


----------



## Dnh (2. Jul 2018)

Danke für die ausführliche Rechnung.
Der letzte Schritt hat mir das Genick gebrochen.
Ich bin davon ausgegangen, dass man mit dem gleichen Vorgehen auch von einer negativen Zahl auf eine positive kommen kann. Sprich: Negation bilden und dann +1 rechnen. Ich wusste nicht, dass man hier genau andersherum verfahren muss.


----------



## mihe7 (2. Jul 2018)

Das stimmt ja auch:


```
2k(00101001) = 11010110 + 1 = 11010111 = 215
```


----------

