Operatoren Subtraktion von Dualzahlen Vorzeichen/Betrag

Hallo,

auch wenn das keine direkt auf Java bezogene Frage ist, so hoffe ich doch, dass man mir hier weiterhelfen kann...

Wenn ich zwei Dualzahlen a und b, die mittels Vorzeichen/Betrag, dargestellt sind (d.h. Bit ganz links = 0 -> positiv, Bit ganz links = 1 -> negativ) voneinander subtrahiere, wobei b betragsmässig größer ist, klappt meine Rechnung irgendwie nicht.

a = 01001 (Dezimal +9)
b = 11100 (Dezimal -12)

Hier müsste ja -3 rauskommen.

01001
11100
=====
11101

Von rechts nach links 1-0 = 1, 0-0 = 0, 0-1 = 1 Übertrag 1, 1-1-1 = 1 Übertrag 1

Hier kommt jedoch 11101 raus, d.h. Dezimal -13 statt 10011 für -3

Hat da jemand ne Idee woran das liegen kann?

Die Berechnung von Dezimal 3 und Dezimal -7 klappt hingegen problemlos in der o.g. Darstellung (3-7 = -4 = 1100

Obwohl B auch vom Betrag größer ist als a

a = 0011
b= 1111

0011
1111
==========
1100

Von rechts nach links 1-1=0, 1-1=0, 0-1 = 1 Übertrag 1
(siehe auch 403 Forbidden)

Wo liegt mein Fehler in der ersten Rechnung?
 
Es fängt schonmal damit an, dass

9 - (-12) nicht -3 ergeben sollte und deshalb auch 3 - (-7) nicht -4.

Auch sonst kann das so gar nicht funktionieren.

Gruß

Claus
 
Hmm. Wie addiere/subtrahiere ich denn dann Zahlen in der Vorzeichen/Betrag Darstellung bitweise? Das zur Subtraktion meist auf die Addition der Komplemente zurückgegriffen wird soll jetzt hier mal nicht zur Debatte stehen.
 
Also wenn du "richtige" Dualzahlen hast, dann ist

1111 nicht -7 sondern -1. Vorrausgesetzt Du hast ein 4-Bit System.

Du kannst nicht einfach sagen das linkeste Bit ist Vorzeichen. Du must erstmal festlegen wieviel Bit dein System hat. Dann ist immer das höchste bit das Vorzeichenbit. Und wenn das gesetzt ist, dann ist der Wert immer 2^(bitanzahl-1)-untereBits.

Gruß

Claus
 

Neue Themen


Zurück
Oben