Binäre Subtraktion mit Komplement?

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Eine Stelle zu wenig.


etechniknixgut 
Fragesteller
 12.02.2020, 20:31

Was würde es ändern? Bzw wie wäre es korrekt?

0
W00dp3ckr  12.02.2020, 20:34
@etechniknixgut

Probier es aus. Schreib ne null vor die binäre 27 und dann 2erkomplement.

Du bekommst dann eine negative Zahl im 2erkomplement raus.

0
etechniknixgut 
Fragesteller
 12.02.2020, 20:37
@W00dp3ckr

Okay, das wäre dann 100101

Aber 100101 + 111 = 101100, ohne Übertrag in der letzten Stelle.

0
W00dp3ckr  12.02.2020, 20:43
@etechniknixgut

Dass das oberste Bit ne 1 ist sagt dass die Zahl NEGATIV ist. Wie machst Du daraus ne positive Zahl?

1
etechniknixgut 
Fragesteller
 12.02.2020, 20:44
@W00dp3ckr

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

0
W00dp3ckr  12.02.2020, 20:48
@etechniknixgut

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!

1
W00dp3ckr  12.02.2020, 20:57
@etechniknixgut

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.

1
etechniknixgut 
Fragesteller
 12.02.2020, 21:04
@W00dp3ckr

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?

0
W00dp3ckr  12.02.2020, 21:10
@etechniknixgut

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

1
etechniknixgut 
Fragesteller
 12.02.2020, 21:13
@W00dp3ckr

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

0

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.


etechniknixgut 
Fragesteller
 12.02.2020, 22:40

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?

1
Fanras1  12.02.2020, 22:57
@etechniknixgut

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.

1
etechniknixgut 
Fragesteller
 12.02.2020, 23:08
@Fanras1

Hatten wir gar nicht, dann kommts wahrscheinlich nicht in der Prüfung dran :D

1

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.


etechniknixgut 
Fragesteller
 12.02.2020, 20:38

32 - 5 = 27 wahrscheinlich

0
raven3k  12.02.2020, 20:45
@etechniknixgut

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.

1

Und die Komplementzahl ist doch falsch , 00101 währe der einer Komplement

Woher ich das weiß:Studium / Ausbildung – Informatik Studium