Negative Binärzahl in Dezimalzahl umwandeln?

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Bei negativen Zahlen verwendet man überwiegend das Zweierkomplement (ich habe das Thema zur Frage hinzugefügt). Dabei wird zur Multiplikation mit (-1) die Binärzahl invertiert und 1 addiert.

Ermittlung der Dezimalzahl aus der Binärzahl 11010

11010

-> invertieren -> 00101 -> 1 addieren -> 00110

-> 110 (binär) = 6 (dezimal)

-> 11010 (binär) = -6 (dezimal)

Ermittlung der Binärzahl aus der Dezimalzahl -13

Begonnen wird ohne negatives Vorzeichen:

+13 (dezimal) = 1*8 + 1*4 + 0*2 + 1*1 = 1101 (binär)

1101 auf 5 Ziffern bringen -> 01101

Um von +13 auf -13 zu kommen, wird wieder das Zweierkomplement angewandt.

Zu berücksichtigen ist, dass in beide Richtungen (binär zu dezimal und umgekehrt) immer zuerst invertiert, und danach 1 addiert wird. Die Operationen werden nicht vertauscht, und sie werden auch nicht selbst invertiert (z.B. durch Subtraktion von 1).

01101 -> invertieren -> 10010 -> 1 addieren -> 10011

Probe

Um z.B. zu überprüfen, ob 11010 wirklich -6 ist, kannst du rechnen:

(+6) + (-6) = 0

Das ist sicher bekannt. Jetzt muss das binäre Ergebnis aber auch 0 sein:

00110 + 11010

Wenn du schriftlich binär addierst, entsteht die Zahl 100000 (binär). Die vom Ende der Zahl aus gelesen sechste Ziffer ist 1, aber das ist ein versteckter Übertrag, der aufgrund der Begrenzung auf 5 binäre Ziffern verlorengeht.

Nur die letzten 5 Ziffern werden gespeichert, und die sind alle 0. 11010 (binär) = -6 (dezimal) ist also richtig.

ChefnspektorJoe  28.08.2023, 22:19

Sehr schön erklärt, danke auch von meiner Seite!

0

Ist eigentlich ganz einfach, wenn man bedenkt, dass das vorderste Bit einen negativen Wert hat. Das ist immer so.

Die Bits von 1 1 0 1 0 haben die Werte

-16 8 4 2 1

Somit kann du -16 + 8 + 2 berechnen.

Andersrum für -13 brauchst du was negatives. Das kann nur die -16 sein. Also ist das linke Bit gesetzt.

Nun noch die Differenz von -16 und -13 durch die anderen Bits ausgleichen.

Ich habe mir mal ein C++ Programm geschrieben das dezimal / binär konvertiert

1)

+14 -> binär: 00000000 00000000 00000000 00001110

-14 -> binär: 11111111 11111111 11111111 11110010

2)

-13 -> binär: 11111111 11111111 11111111 11110011

Jangler13  08.01.2023, 10:17

Es sollen 5 bit Zahlen sein, nicht 32 Bit.

1

Ich glaube die erste Zahl ist 26

1 1 0 1 0

16 8 4 2 1

2 + 8 + 16 = 26

EDIT: Habs nochmal durchgelesen, my bad, weiß nicht wie es mit negativen Zahlen funktioniert