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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.