Addieren mit 2er Komplement.

Trance

Lt. Commander
Mitglied seit
20.05.2006
Beiträge
131
Renomée
0
Hi Leute,

Habe leider kein passenderes Unterforum gefunden, deshalb schreibe ich mein Anliegen mal hier rein.
Hoffe von euch kennt sich jemand mit dem Addieren von Binärzahlen aus, weil mir ist da was nicht ganz klar. Bzw. ich brauche einen Denkanstoß.

Wenn man z.b. die Rechnung 15-32 binär durchführen will, bildet man von der Zahl "-32" das Zweierkomplement und addiert es mit 15.

Jetzt zu meiner Frage. Hab schon fleißig im Internet gesucht, bin aber nicht fündig geworden.
Muss man aus dem Ergebnis, das man bekommt, nochmal das Zweierkomplement bilden oder kann man es so stehen lassen?
Bzw. in dem Beispiel muss man es um auf "17" als Betrag zu kommen, aber es gibt auch andere Fälle bei denen ist es nicht so Hat das was mit der Größe des Minuends und des Subtrahends zu tun?


Über eine Antwort würde ich mich freuen.

Gruß Trance
 
Ich weiß nicht so recht, worauf du hinaus willst. Dein Text hat jedenfalls 2 kleine Fehler: Um den Kehrwert einer Zahl zu bilden, mußt du das 2er-Komplement bilden und danach noch 1 addieren!
Und bei 15 - 32 kommt natürlich -17 raus und nicht 17.
In welchem Fall soll das denn nicht funktionieren?

Code:
                               001111 = 15
100000 -> 011111 -> 100000 = -32 (=32 bei 6 Bit breiten Zahlen - oder besser: +32 kann nicht dargsetellt werden!)
                               101111 = -17

101111 -> 010000 -> 010001 = 17
 
Zuletzt bearbeitet:
hmm...mein Problem ist auch schwer zu schildern.

Wenn man im Windowstaschenrechner "101111" eingibt und das Ganze in Dezimalzahlen umwandelt bekommt man als Ergebnis 47 angezeigt und nicht -17.

Ich mach mal ein Beispiel und zwar:

36 -> 00100100
-48 -> 2er komplement-> +11010000
----
-12

00100100
+11010000
-------------------------
11110100 -> Windowstaschenrechner zeigt von Bin zu Dez "244" an.

Wenn man von dem Ergebnis jedoch wieder das 2er Komplement bildet, bekommt man 00001100 -> Was dann ja 12 darstellt.
Das ist genau mein Problem. Muss ich von dem Ergebnis nochmal das 2er Komplement bilden um auf den Wert 12 zu kommen?

Ich glaube ich mach mir die Welt viel zu komplizert!Wahrscheinlich wird es schon so stimmen.
 
Zuletzt bearbeitet:
Wenn man im Windowstaschenrechner "101111" eingibt und das Ganze in Dezimalzahlen umwandelt bekommt man als Ergebnis 47 angezeigt und nicht -17.
Weil der das höherwertigste Bit als +32 interpretiert und nicht als Vorzeichen. Die andere Möglichkeit wäre allerdings -17, da 47+17 = 64. Und dann sind wir auf dem Zahlenkreis wieder bei 0.

Google mal nach "zahlenkreis hexadezimal".
 
Wie mein Vorredner schon sagte, bzw. andeutete, kann das im Windows-Taschenrechner nicht funktionieren, da du nicht definiert hast, wie breit deine Zahl ist und daher kein Vorzeichen reininterpretieren kannst, deshalb kriegst du da immer positive Zahlen (falls du C kennst: "unsigned").

Es ist also reine Interpretationssache, ob das Ergebnis stimmt, die Rechnung ist korrekt.
 
Zurück
Oben Unten