negative Dezimalzahl in Binär

OP #6599803
Lesenswert?

Wie wandelt man eine negative Dezimalzahl in eine Binärzahl um ?

Also bei postiven Zahlen sieht es ja so aus
Bsp.:
Zahl 42

42/2=21 Rest 0
21/2=10 Rest 1
10/2=5   Rest 0      Binärzahl: 1 0 1 0 1 0
 5/2=2   Rest 1
 2/2=1   Rest 0
 1/2=0   Rest 1


Wie würde die Binärzahl bei -42 aussehen ?
Gast #6599814
Lesenswert?

Mit dem 2er-Komplement.

1. Schritt : Alle Stellen invertieren
2. Schritt : 1 addieren

Binärzahl : 00101010 (42)

Invertiert: 11010101
1 addieren:        1
            --------
Ergebnis  : 11010110 (-42)


Wichtig: Das linke Bit ist immer das Vorzeichen und hat keinen 
Stellenwert.
Gast #6599853
Lesenswert?

HildeK schrieb:
> GeraldB schrieb:
>> Wichtig: Das linke Bit ist immer das Vorzeichen und hat keinen
>> Stellenwert.
>
> ... oder den Stellenwert -128, siehe mein Link zu Wikipedia.

Nicht oder (im üblichen Sprachgebrauch), sondern Exclusiv-Oder.

Entweder repräsentiert es das Vorzeichen oder (alternativ-oder!) den 
Stellenwert 2^7=128.

Das erste ist der Fall, wenn der Ausgangswert negativ ist, das zweite 
ist der Fall, nachdem man den negativen Ausgangswert in die nicht 
vorzeichenbehaftete Darstellung umgewandelt hat. Lustigerweise passiert 
im Fall von -128 nämlich in der binären Repräsentation dabei rein 
garnix, die ist vor und nach der Wandlung gleichermaßen 0b10000000.
Gast #6599957
Lesenswert?

man könnte es etwas entschärfter formulieren, bei hexadezimalzahlen, 
falls sie ein Vorzeichen bekommen/ negativ sind haben die mindestens 
eine 8 vorne (8-f).
Mit Vorzeichen in den negativen Bereich shiften, ist auch sehr 
interessant, sollte man sich, falls noch nicht gesehen, unbedingt mal 
irgendwo ansehen.
Die hexadezimalen Entsprechungen der beiden Zahlenausdrücke oben sind
2A und D6.
#6599979
Lesenswert?

rbx schrieb:
> Mit Vorzeichen in den negativen Bereich shiften, ist auch sehr
> interessant, sollte man sich,

Man kann logisch (dann kommt eine 0 rein) oder arithmetisch (dann wird 
das Vorzeichenbit genommen) nach rechts schieben.

Im C-Standard ist nicht definiert was genommen wird , auch wenn man 
meint, das hängt von signed/unsigned Typen ab. Kann es, muss es aber 
nicht.
Gast #6600007
Lesenswert?

> Wie wandelt man eine negative Dezimalzahl in eine Binärzahl um ?

Indem man den Betrag von 0 abzieht und nach der gewünschten Anzahl 
Stellen abbricht:
1
  00000000
2
- 00101010
3
  --------
4
  11010110

(Ergibt das 2er-Komplement, 0-x  <=> ~x+1 (mod 2^N))

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren