2er-Komplement Allgemein

Neue Frage »

Auf diesen Beitrag antworten »
Julien87 2er-Komplement Allgemein

Guten Abend,

mich würde gerne interessieren wie ich allgemein vorgegebene Zahleinnwerte als Zweierkomplement erkenne, sofern sie im 2er-Komplement vorgegeben sind. Beim Binärsystem erkenn ich das an der 1 vorne. Was ist bei Hexadezimalwerten bzw. Allgemein?

Und mich würde interessieren wie ich das zweierkomplement zurückinvertiere im Allgemeinen um die Ausgangszahl erkennen zu können. Beim Binärsystem wird invertiert und dies mit +1 addiert. Wie kann ich das auf alle Zahlensysteme übertragen?
 
Auf diesen Beitrag antworten »
eulerscheZahl

Zunächst einmal heißt das in anderen Zahlensystemen nicht mehr Zweierkomplement.
Wie wird das Komplement gebildet?
ziffernweise wird auf die größtmögliche Ziffer des Zahlensystems ergänzt. Danach wird noch 1 addiert.
Bsp.: in Dezimalsystem gibt es Ziffern von 0 bis 9. Es wird also immer auf 9 ergänzt.
1234 -> 8765+1 = 8766
Zurückrechnen geht auf die selbe Weise.

Wie erkennt man, ob eine Zahl in Komplementdarstellung negativ ist?
In einem Zahlensystem mit z verschiedenen Zeichen und bei einer Zahl der Länge l (Anzahl der Ziffern) gibt es [latex]z^l[/latex] mögliche Zahlen.
Bsp.: Hexadezimalsystem, 4 Ziffern: es gibt 16^4 = 65536 Zahlen, die so dargestellt werden können.
Der "untere" Teil, also von 0 bis [latex]z^{l-1}-1[/latex] ist dabei für die positiven Zahlen reserviert, im "obenen" Teil ([latex]z^{l-1} \text{ bis } z^l-1[/latex]) sind die negativen Zahlen.
Bsp von oben: von 0 bis 7fff("untere Hälfte") ist die Zahl positiv, von 8000 bis ffff("obere Hälfte") negativ.
Auf diesen Beitrag antworten »
Julien87

Hallo,

und vielen dank für die Antwort. Können wir uns eventuell erst einmal auf eine Hexadezimalzahl konzentrieren die zwei Stellen hat? Hier aus einer Beispielklausur:

4B und E4 sind im Komplement (Hier steht 2er-Komplement?) gegeben. Nun soll ich diese in eine 8stellige Dualzahl umwandeln. Ich mach das immer über die Dezimalzahl. Also wäre es klasse die Dezimalzahl der vorgegebenen Werte zu ermitteln. Jetzt weiss ich z.b. gar nicht welche den Negativ ist.

16^{2} =256

Jetzt habe ich nicht ganz verstanden woran ich erkennen kann welche den negativ ist. Kannst du das bitte am Beispiel hier zeigen, den ich finde so wird es mir klarer.
Auf diesen Beitrag antworten »
eulerscheZahl

Wenn du von Hex in Dual wandeln willst, ist das Dezimalsystem als Zwischenschritt ein unnötiger Mehraufwand: dafür musst du entweder Kopfrechnen können oder brauchst einen Taschenrechner. Die direkte Umwandlung zwischen Dual und Hex geht im Kopf.

Der lange Weg:
Wie du schon erkannt hast, ist 16²=256. Daher sind die Zahlen von 0 bis 127 positiv, von 128 bis 256 negativ.
[latex]4B_{16}=16\cdot 4 + 11_{10} = 75_{10}[/latex] 75 < 128, daher positiv. Umwandlung ins Dualsystem kriegst du selbst hin, Lösung folgt weiter unten.
[latex]E4_{16}=14\cdot 16+4 = 228_{10}[/latex] 228 >= 128, das ist also eine negative Zahl. Hier ein kleiner Trick: ich ziehe einfach 16²=256 ab, um die Zahl in den Bereich [-128;127] zu bringen: 228-256=-28. Die Zahl ist -28.

Der schnelle Weg:
16=2^4, daher lässt sich eine Hexziffer durch 4 Binärziffern ausdrücken. Das funktioniert nur so einfach, wenn es glatt aufgeht.
Von Dezimal in Dual: 10=2^3,3219... geht nicht auf, da ist die Umrechnung aufwendiger.
4 = 0100
B = 1011
E = 1110
4B = 01001011 (einfach das Bitmuster von 4 und das von B aneinandersetzen)
E4 = 11100100
 
Auf diesen Beitrag antworten »
Julien87

Vielen dank, also kann ich einfach wie folgt vorgehen:

Basis der Hexadezimalzahlen ist 16, wobei im Binären 2^4 =16 gilt. Das heißt hier kann ich erkennen das eine Hexadezimalzahl durch max. 16 Binärziffern ausgedrückt werden kann.

Wenn ich nun ein beliebigen Zahlenwert in Hexadezimalschreibweise in die Binäre Schreibweise umwandeln will, brauch ich einfach nur die einzelnen Ziffern der Hexadezimalzahl einzeln in Binäre Werte umzuwandeln. Danach werden die nur aneinandergereiht. Auch brauche ich mir hier noch keine Gedanken über ihr Vorzeichen machen, denn dieses kann ich in der Binärschreibweise leicht erkennen.

Wie du bereits erwähnt hattest gilt:

4 = 0100
B = 1011
E = 1110

Daraus folgt:

4B = 01001011
E4 = 11100100

Da im Komplement die Werte gegeben sind, ist 4B= 01001011 Positiv und E4 = 11100100 negativ (Abgelesen von der vordernsten Ziffer)

Um nun die Dezimalzahl herauszubekommen, kann ich getrost einfach wie gewohnt die Zahlen in das Dezimalsystem umwandeln, bei 2er-Komplement folgt bei Werten mit einem Vorzeichen von 1, inver. und +1 dazuaddieren.


Bin mir sicher das ich alles verstanden habe und wollte nur Zweck des einprägens noch einmal alles erwähnen. Ist dieses Denkmuster korrekt ? Dann wären wir bereits fertig. Daumen hoch
Auf diesen Beitrag antworten »
Julien87

Hi wieso zeigt er mir bei arndt-bruenner.de etwas anderes an wenn ich 4B ins Binärsystem umwandel?
Auf diesen Beitrag antworten »
eulerscheZahl

Zitat:
Basis der Hexadezimalzahlen ist 16, wobei im Binären 2^4 =16 gilt. Das heißt hier kann ich erkennen das eine Hexadezimalzahl durch max. 16 Binärziffern ausgedrückt werden kann.

Nein. 4 Ziffern im Dualsystem(2) entsprechen einer Ziffern im Hexadezimalsystem(16).

Zitat:
wieso zeigt er mir bei arndt-bruenner.de etwas anderes an wenn ich 4B ins Binärsystem umwandel

Weil Arndt Brünner keine führenden Nullen anzeigt. Wenn du im unteren Drittel der Seite auf "formatiere um" klickst, wird sogar die führende Null mit angezeigt.
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »