Negative Binärzahl in Dezimalzahl umwandeln?
Moin Leute,
1:Wie kann ich die Binärzahl 11010 (5 Bit Zahlenkreis mit negativen Zahlen) in die Dezimalzahl umwandeln?
2: die Dezimalzahl -13 im (5 Bit Zahlenkreis mit negativen Zahlen) in die entsprechende Binärzahl umwandeln?
Wär nice wenn mir das jemand erklären könnte , mfg
4 Antworten
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 1101011010
-> invertieren -> 00101 -> 1 addieren -> 00110
-> 110 (binär) = 6 (dezimal)
-> 11010 (binär) = -6 (dezimal)
Ermittlung der Binärzahl aus der Dezimalzahl -13Begonnen 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
ProbeUm 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.
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
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