Zum Inhalt springen

Frage zur Komplementaddition von zwei negativen Zahlen


Kiggie

Empfohlene Beiträge

Hallo liebe Foren-Mitglieder, 

ich habe eine Frage zum Zweierkomplement und Komplementaddition. 

Ich habe die folgenden Aufgaben: 

Gelöst werden sollen Sie durch Rechnung mit 8-Bit-Dualzahlen im Zweierkomplement: 

a) +32-15

b) -32-15

Bei a) habe ich keine Probleme. 

+32+(-15) = +17

Ich stelle den Subtrahenden im Zweierkomplement dar. (11110001)

Das addiere ich dann zur 32 (00100000) 

Ergebnis: 100010001

Der Übertrag von 1 (9. Stelle) sagt mir, dass es sich um eine positive Zahl handelt und wird gestrichen, daher: 00010001, dies entspricht der 17, stimmt also. 

 

b) führt dann zum Problem. Ich habe die -32 auch als Zweierkomplement dargestellt (11100000), dazu die -15 von oben

11100000

11110001+

Führt zu: 111010001

Hier ist wieder ein Überlauf, was, nach dem was ich gelernt habe, auf eine positive Zahl hindeutet. Aber das ist hier ja falsch, ich erwarte die -47. Wandel ich die Zahl ohne Überlauf (11010001) in das Zweierkomplement um erhalte ich die 47, aber das Vorzeichen zuvor ist ja nicht korrekt gedeutet. 

Wo liegt mein Rechen- oder Denkfehler?

Gibt es generell etwas zu beachten, wenn ich zwei negative Zahlen addiere? 

 

Vielen Dank für die Hilfe

Kiggie

Link zu diesem Kommentar
Auf anderen Seiten teilen

Nach Rumprobieren habe ich gerade noch die Idee: 

-32-15 = -(+32+15)

Daher wäre zunächst die Addition der beiden Zahlen (32+15) in ihrer normalen Form (=47 / 00101111)möglich und anschließend das Zweierkomplement vom Ergebnis führt zur richtigen Zahl -47 (11010001)

Ist die Frage, ob dies formal der korrekte Weg ist? 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Huhu,

dein Denkfehler besteht darin, dass du bei der Addition auch das Bit für das Vorzeichen mit berücksichtigen musst. Stichwort: Vorzeichenerweiterung. (https://de.wikipedia.org/wiki/Zweierkomplement#Vorzeichenerweiterung)

Sprich, du musst die 9. Stelle bereits beim Addieren/Bilden den Zweierkomplements berücksichtigen.

D.h. bei der ersten Rechnung wäre es:

   (0) 0010 0000
+ (1)1111 0001
= (0)0001 0001 => Vorne Null = Zahl positiv

Und bei der zweiten eben:

  (1)1110 0000
+(1)1111 0001
=(1)1101 0001 => Vorne Eins = Zahl negativ

Von dieser Zahl das Zweierkomplement ist 47, da aber die 1 vorne an 9. Stelle stand, weißt du, dass das Ergebnis also -47 ist.

 

Bearbeitet von Rienne
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo, 

vielen Dank, ich höre zum ersten Mal davon ?

Bisher haben alle Rechnungen so funktioniert, so dass ich es nur kannte, mit bzw. ohne Überlauf und die Deutung der Zahl daraus. 

Aber danke für den Hinweis und den Link, dann schaue ich mir das noch einmal damit an. 

EDIT: Dort steht aber: "Solange der gültige n-stellige Zahlenbereich, bei 8 Bit breiten Zahlen der Wertebereich der Summe von −128 bis +127, nicht verlassen wird, funktioniert dieses Vorgehen ohne Vorzeichenerweiterung problemlos."
Und ich verlasse den Wertebereich ja eigentlich nicht. Woher weiß ich denn dann, wann ich mit und wann ohne Vorzeichenerweiterung arbeiten muss? 
 

Viele Grüße

Bearbeitet von Kiggie
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 36 Minuten schrieb Kiggie:

Dort steht aber: "Solange der gültige n-stellige Zahlenbereich, bei 8 Bit breiten Zahlen der Wertebereich der Summe von −128 bis +127, nicht verlassen wird, funktioniert dieses Vorgehen ohne Vorzeichenerweiterung problemlos."
Und ich verlasse den Wertebereich ja eigentlich nicht. Woher weiß ich denn dann, wann ich mit und wann ohne Vorzeichenerweiterung arbeiten muss?

Ich würde es einfach immer machen. Wenn du dir die Beispiele vor dem Abschnitt "Vorzeichenerweiterung" anschaust, wird dort auch nicht wirklich klar, ob es sich um eine negative oder positive Zahl handelt:

Zitat

−4 + 3 = −1 entspricht:
  11111100
+ 00000011
= 11111111 (Quelle: Wikipedia)

Denn so, wie es da steht, ist nicht ersichtlich, ob es 255 oder -1 ist. Würdest du bei dem Zweierkomplement von -4 jedoch die 1 an 9. Stelle berücksichtigen, wäre klar, dass es -1 sein muss.

oder auch

Zitat

+4 − 3 = +1 entspricht:          −4 − 3 = −7 entspricht:
   0 00000100                        1 11111100
+  1 11111101                      + 1 11111101
=  1 00000001                      = 1 11111001
=  0 00000001                      = 1 11111001

Hier kann man genausowenig unterscheiden. Man muss bedenken, dass in diesen Fällen der Überlauf, ohne dass man das Vorzeichenbit berücksichtigt, nicht wirklich auf das Vorzeichen des Ergebnisses zu schließen ist.

Wäre hier z.B. bei +4 - 3 das Vorzeichenbit vorhanden, ist direkt klar, dass das Ergebnis positiv ist (siehe rote Zahlen).

Außerdem solltest du berücksichtigen, dass es für dich, der die Zahlen, mit denen subtrahiert werden soll, kennt und auch selber logisch entscheiden kann, welche der beiden Varianten in dem Fall die richtige ist, entscheidbar ist, ob das Ergebnis positiv oder negativ zu interpretieren ist. Ein Rechner kann das nicht.

Bearbeitet von Rienne
Link zu diesem Kommentar
Auf anderen Seiten teilen

Das ist ein guter Denkanstoß. Danke. 

Ich komme nicht aus dem IT-Bereich, sondern habe das an der Uni in Grundlagen Informatik im ET-Studium. 

Heißt, ich kann zwar rechnen und mit Zahlen umgehen, aber die Verknüpfung zum Rechner ist nicht wirklich Thema. 

Kannst du zufällig ein gutes Buch in dem Bereich empfehlen? 

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 11 Minuten schrieb Kiggie:

Kannst du zufällig ein gutes Buch in dem Bereich empfehlen?

Leider nein.

Mein ET-Studium liegt gut 10 Jahre zurück und ich meine, dass wir in den Informatik-Kursen auch keine Bücher verwendet haben. Und im jetzigen Studium arbeiten wir auch vor allem mit Skripten und dem www.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...