Binäre Subtraktion mit Komplement?
4 Antworten
![](https://images.gutefrage.net/media/default/user/13_nmmslarge.png?v=1551279448000)
Eine Stelle zu wenig.
![](https://images.gutefrage.net/media/default/user/13_nmmslarge.png?v=1551279448000)
Probier es aus. Schreib ne null vor die binäre 27 und dann 2erkomplement.
Du bekommst dann eine negative Zahl im 2erkomplement raus.
![](https://images.gutefrage.net/media/default/user/8_nmmslarge.png?v=1551279448000)
Okay, das wäre dann 100101
Aber 100101 + 111 = 101100, ohne Übertrag in der letzten Stelle.
![](https://images.gutefrage.net/media/default/user/13_nmmslarge.png?v=1551279448000)
![](https://images.gutefrage.net/media/default/user/8_nmmslarge.png?v=1551279448000)
Das ist 44... Das ist ja das Problem :D
![](https://images.gutefrage.net/media/default/user/13_nmmslarge.png?v=1551279448000)
Dass das oberste Bit ne 1 ist sagt dass die Zahl NEGATIV ist. Wie machst Du daraus ne positive Zahl?
![](https://images.gutefrage.net/media/default/user/8_nmmslarge.png?v=1551279448000)
In meinem Skript steht, dass wenn es kein Übertrag gibt, die Zahl negativ ist. Da hast du natürlich recht, aber das macht aus -44 noch nicht -20
![](https://images.gutefrage.net/media/default/user/13_nmmslarge.png?v=1551279448000)
nein. Die Zahl ist negativ und den Betrag erhältst Du durch das Berechnen des zweierkomplements dieser Zahl. Und das ist zufällig 20. rechne das bitte nach!
![](https://images.gutefrage.net/media/default/user/8_nmmslarge.png?v=1551279448000)
Oh Gott, danke :) Daran hab ich gar nicht mehr gedacht... DANKE
![](https://images.gutefrage.net/media/default/user/13_nmmslarge.png?v=1551279448000)
Freut mich! Genauso funktioniert das, wenn Du noch mehr Bits hast. Also z.B. 8-Bit Zahlen. Dann hast Du vorm Komplement mehr führende Nullen, beim Komplement werden das dann führende Einsen.
![](https://images.gutefrage.net/media/default/user/8_nmmslarge.png?v=1551279448000)
Ich dachte immer, das muss ich nur machen, wenn Zahl 2 weniger Bits als Zahl 1 hat. Wenn beide gleich lang sind, kann ich es ja lassen. Sollte Zahl 2 länger als Zahl 1 sein, muss ich bei Zahl 2 also eine führende 0 anfügen? Korrekt?
![](https://images.gutefrage.net/media/default/user/13_nmmslarge.png?v=1551279448000)
Die Frage ist halt, auf wieviele Bits du rechnest. Wenn Du z.B. 8 Bits hast, um zahlen darzustellen, dann ist -1 dargestellt als 11111111.
3+(-1) wird dann 00000011 + 11111111 = 00000010
![](https://images.gutefrage.net/media/default/user/8_nmmslarge.png?v=1551279448000)
Also es schadet nie, bei beiden Zahlen viele Nullen davor zu schreiben?
Das wäre nämlich auch bei der Multiplikation sehr hilfreich :)
z.B. -1010 * 1011
= -00001010 * 00001011
= 11110110 * 00001011
![](https://images.gutefrage.net/media/default/user/13_nmmslarge.png?v=1551279448000)
Du stellst die 27 als 11011 dar. Im 2er Komplement wäre das aber aufgrund der führenden 1('sign bit') eine negative Zahl(-37). Also entspricht die 27 im 2er Komplement: 011011. Die kannst du nun inkrementieren und invertieren und erhältst somit 100101= -27.
Das addiert mit 7(000111) ergibt 101100.
Durch 1 subtrahieren und invertieren(2er Komplement rückwärts angewandt) kannst du nun überprüfen du richtig gerechnet hast. Es sollte nämlich 20 rauskommen. Somit ist 101100 = -20 = 7-27.
![](https://images.gutefrage.net/media/default/user/8_nmmslarge.png?v=1551279448000)
Danke, weißt du auch wie ich das bei Multiplikation machen muss, wenn ich z.B. -10 * 11 rechnen will?
Das wäre ja -1010 * 1011
Woher weiß ich, wie viele führende 0er ich hinzufügen muss?
![](https://images.gutefrage.net/media/default/user/13_nmmslarge.png?v=1551279448000)
Für die Multiplikation mit 2er Komplementzahlen gibt es verschiedene Algorithmen. Du könntest dir zum Beispiel den Booth Algorithmus ansehen. Es ist scheint mir zu komplex den hier genauer zu erläutern.
![](https://images.gutefrage.net/media/default/user/8_nmmslarge.png?v=1551279448000)
Hatten wir gar nicht, dann kommts wahrscheinlich nicht in der Prüfung dran :D
![](https://images.gutefrage.net/media/user/raven3k/1560098565256_nmmslarge__23_0_552_552_ffbd78055872db6dfea09abed72bb425.jpg?v=1560098565000)
Versuchs auch gerade zu verstehen.
Wieso hat der Komplement den Wert 5 und bei der Rechnung steht 7?
Bin mal auf die Lösung gespannt.
![](https://images.gutefrage.net/media/default/user/8_nmmslarge.png?v=1551279448000)
![](https://images.gutefrage.net/media/user/raven3k/1560098565256_nmmslarge__23_0_552_552_ffbd78055872db6dfea09abed72bb425.jpg?v=1560098565000)
eigentlich liebe ich es mit binär zu rechnen... aber irgendwie steig ich bei den Gekritzel gerade nicht durch. Brauchst nicht antworten... ich lese einfach mal was andere dazu antworten.
![](https://images.gutefrage.net/media/default/user/8_nmmslarge.png?v=1551279448000)
![](https://images.gutefrage.net/media/user/phillip1872r/1588848445099_nmmslarge__0_0_505_504_ba3e518f9d79355e3bcae241b5424419.jpg?v=1588848445000)
Und die Komplementzahl ist doch falsch , 00101 währe der einer Komplement
Was würde es ändern? Bzw wie wäre es korrekt?