Ich soll zwei binärzahlen addieren und diese dann im zweierkomplement darstellen, aber warum und wie?

2 Antworten

Wenn die Aufgabe heißt "Stellen Sie im Zweierkomplement dar" ist grundsätzlich davon auszugehen, dass die Zahl negativ in dieser Darstellung angezeigt werden soll.

Das Zweierkomplement ist eine Darstellungsmöglichkeit negativer Zahlen im Dualsystem, womit Maschinen arbeiten können. Eine Maschine hat eben nur zwei Zustände, und ein "Minus" ist keines davon - daher müssen negative Zahlen (als auch bspw. Gleitkommazahlen, da eine Maschine eben auch nicht mit Kommata rechnen kann) über Umwege, wie das Zweierkomplement, dargestellt werden. Es wird gebildet, indem alle Bits invertiert werden (bspw. not(00101101) = 11010010) und anschließend eine 1 addiert wird (11010010 + 00000001 = 11010011).

Dadurch, dass das MSB (Most Significant Bit, das Bit ganz links) eine 1 ist, ist für eine Maschine, die mit dem Zweierkomplement rechnet, klar, dass es sich um eine negative Zahl handelt. Dadurch kann sie wieder entsprechend umgerechnet und mit ihr weitergerechnet werden.

Woher ich das weiß:Berufserfahrung – Inhaber einer App-Agentur & 15+ Jahre Programmiererfahrung
qwdoijoi21 
Fragesteller
 10.10.2021, 18:15

Danke, aber kann man dann den Zweierkomplement direkt wieder zu dezimal umrechnen, wie man es sonst mit binär macht

0
Functional  10.10.2021, 18:20
@qwdoijoi21

Nein, dann müsstest du das Zweierkomplement erst wieder "auflösen" (d.h. eine 1 subtrahieren, dann die Bits invertieren) und dann in dezimal umrechnen.

Dadurch, dass du aber weißt, dass es sich um ein Zweierkomplement handelt und das Most Significant Bit eine 1 war (vor dem Invertieren), muss der am Ende resultierenden Dezimalzahl ein Minus vorgestellt werden.

Die von mir o.g. Zahl 00101101 wäre eine 45 in dezimal. Würdest du die Zweierkomplementdarstellung 11010011 einfach direkt in dezimal konvertieren, würde da etwas völlig anderes bei raus kommen (nämlich 211). Deshalb erst die Schritte wieder umdrehen, dann in dezimal umrechnen und ein Minus davor schreiben.

0
Erzesel  10.10.2021, 18:29

Vergiss es der Typ verar***t uns seit Stunden... 😡 unter anderem Namen.

0

Weshalb wechselst Du den Nutzernamen?

Irgendwie grenzt Deine Fragerei schon an Spam.

Viele Helfer haben bereits versucht Dir die Basis von Wissen über Variablen, Datentypen und Wertebereich zu liefern.

Ich habe Dir einen Link zu W3Schools gegeben, wo alles Professionell erklärt wird.

https://www.gutefrage.net/frage/byte-a64-byte-b96-warum-ergibt-nun-byte-c-byte-ab-einfach-0-muesste-da-nicht--48-rauskommen-java#answer-421099185

Deine jetzige Frage spiegelt genau die Rechnung wieder, welche ich für Dich Schritt für Schritt zelebriert habe.

Sogar den Hinweis auf die Nutzung des Windowsrechners gab's gleich zweimal.

Für die Erklärung von Zweierkomplement genügt Google oder Wikipedia

Den Begriff haben wir doch garnicht erwähnt? Komisch irgendwie musst Du selbst drauf gekommen sein.

Ich denke mal Du willst uns rollen vera****en.

Wir sind ja hilfsbereit, wir geben aber weder Unterricht noch kostenlose Nachhilfe.

qwdoijoi21 
Fragesteller
 10.10.2021, 20:00

die Person bin ich nicht lol

0