Binäre Subtraktion mit Komplement?
4 Antworten
Eine Stelle zu wenig.
Probier es aus. Schreib ne null vor die binäre 27 und dann 2erkomplement.
Du bekommst dann eine negative Zahl im 2erkomplement raus.
Okay, das wäre dann 100101
Aber 100101 + 111 = 101100, ohne Übertrag in der letzten Stelle.
Das ist 44... Das ist ja das Problem :D
Dass das oberste Bit ne 1 ist sagt dass die Zahl NEGATIV ist. Wie machst Du daraus ne positive Zahl?
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
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!
Oh Gott, danke :) Daran hab ich gar nicht mehr gedacht... DANKE
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.
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?
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
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
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.
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?
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.
Hatten wir gar nicht, dann kommts wahrscheinlich nicht in der Prüfung dran :D
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.
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.
Und die Komplementzahl ist doch falsch , 00101 währe der einer Komplement
Was würde es ändern? Bzw wie wäre es korrekt?